安卓开发 新浪微博share接口实现发带本地图片的微博
1.微博share接口
在開始之前,我們先看一下要用到的這個(gè)接口:
? ? 我們這次是要上傳本地圖片,可以很明確的知道,除了要用POST方式提交請求,還要采用multipart/form-data編碼方式。
? ? 那么這個(gè)multipart/form-data編碼方式是什么呢?我查了許多資料,然而還是不懂。大概意思應(yīng)該是把數(shù)據(jù)拼成web的POST結(jié)構(gòu)。想詳細(xì)了解的同學(xué)可以去參考其他大神的資料。
下面,咱們開始教程。
2.獲取本地圖片文件
通過Intent打開本地圖庫
然后通過下面的方法獲取圖片路徑
關(guān)于怎么獲取圖片路徑我就不細(xì)講了,網(wǎng)上資料很多,也不難。
獲取路徑后,將其裝載入文件中,如圖所示
我獲取到的scrPath = /storage/emulated/0/DCIM/P70819-094705.jpg
到此,圖片文件的獲取結(jié)束
3.構(gòu)造請求體
我之前發(fā)純文本微博時(shí),使用 FormBodybody =newFormBody.Builder() 的形式來構(gòu)造,
后來發(fā)現(xiàn),帶上圖片的時(shí)候就不行了,我不知道怎么寫。
然后采用了RequestBody requestBody =new MultipartBody.Builder()來構(gòu)造。他們之間的區(qū)別我不是很清楚。
但是看源代碼,似乎RequestBody更容易實(shí)現(xiàn)multipart/form-data編碼方式。
當(dāng)我們獲取圖片文件之后,就可以將其傳到任何一個(gè)你覺得方便的地方(不傳也可以),用于構(gòu)造請求體。
.setType(MultipartBody.FORM)
這一句一定不能少,我也不知道為什么,少了之后服務(wù)器會(huì)說不是multipart/form-data編碼方式。
然后如果是參數(shù),使用.addFormDataPart()
如果是圖片文件,使用addPart()
我還是附上代碼,方便復(fù)制。
RequestBodyrequestBody;
requestBody =newMultipartBody.Builder()
.setType(MultipartBody.FORM)//請求的類型,貌似也叫請求頭吧....
.addFormDataPart("access_token", access_token)//參數(shù)1
.addFormDataPart("status",? statuContent+"http://www.mob.com/downloads/")//參數(shù)2
.addPart(
Headers.of("Content-Disposition","form-data; name=\"pic\"; filename=\""+"pic.jpg"+"\""),
RequestBody.create(null, file))//圖片文件
.build();
4.構(gòu)造Request,發(fā)送請求
接下來就很簡單了,這個(gè)和發(fā)純文本的微博差不多。
我最后還用了異步數(shù)據(jù)處理,來接收返回來的一個(gè)statu,當(dāng)返回的不是錯(cuò)誤時(shí),就證明你成功了。
對應(yīng)的解析方法我就不粘貼出來了,其實(shí)不解析也是可以看的,只是會(huì)亂點(diǎn)。
以上就是全部內(nèi)容。
希望我的分享能讓你們少走彎路.
相關(guān)參考鏈接:
http://blog.csdn.net/king866/article/details/52526901
http://blog.csdn.net/android_freshman/article/details/51910937
總結(jié)
以上是生活随笔為你收集整理的安卓开发 新浪微博share接口实现发带本地图片的微博的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业哪家强,计算机专业哪家强?这4
- 下一篇: ots在线考计算机的word,ots在线