1.微博share接口
在開始之前,我們先看一下要用到的這個接口:

? ? 我們這次是要上傳本地圖片,可以很明確的知道,除了要用POST方式提交請求,還要采用multipart/form-data編碼方式。
? ? 那么這個multipart/form-data編碼方式是什么呢?我查了許多資料,然而還是不懂。大概意思應該是把數據拼成web的POST結構。想詳細了解的同學可以去參考其他大神的資料。
下面,咱們開始教程。
2.獲取本地圖片文件
通過Intent打開本地圖庫

然后通過下面的方法獲取圖片路徑

關于怎么獲取圖片路徑我就不細講了,網上資料很多,也不難。
獲取路徑后,將其裝載入文件中,如圖所示

我獲取到的scrPath = /storage/emulated/0/DCIM/P70819-094705.jpg
到此,圖片文件的獲取結束
3.構造請求體
我之前發純文本微博時,使用 FormBodybody =newFormBody.Builder() 的形式來構造,
后來發現,帶上圖片的時候就不行了,我不知道怎么寫。
然后采用了RequestBody requestBody =new MultipartBody.Builder()來構造。他們之間的區別我不是很清楚。
但是看源代碼,似乎RequestBody更容易實現multipart/form-data編碼方式。

當我們獲取圖片文件之后,就可以將其傳到任何一個你覺得方便的地方(不傳也可以),用于構造請求體。
.setType(MultipartBody.FORM)
這一句一定不能少,我也不知道為什么,少了之后服務器會說不是multipart/form-data編碼方式。
然后如果是參數,使用.addFormDataPart()
如果是圖片文件,使用addPart()
我還是附上代碼,方便復制。
RequestBodyrequestBody;
requestBody =newMultipartBody.Builder()
.setType(MultipartBody.FORM)//請求的類型,貌似也叫請求頭吧....
.addFormDataPart("access_token", access_token)//參數1
.addFormDataPart("status",? statuContent+"http://www.mob.com/downloads/")//參數2
.addPart(
Headers.of("Content-Disposition","form-data; name=\"pic\"; filename=\""+"pic.jpg"+"\""),
RequestBody.create(null, file))//圖片文件
.build();
4.構造Request,發送請求
接下來就很簡單了,這個和發純文本的微博差不多。

我最后還用了異步數據處理,來接收返回來的一個statu,當返回的不是錯誤時,就證明你成功了。

對應的解析方法我就不粘貼出來了,其實不解析也是可以看的,只是會亂點。
以上就是全部內容。
希望我的分享能讓你們少走彎路.
相關參考鏈接:
http://blog.csdn.net/king866/article/details/52526901
http://blog.csdn.net/android_freshman/article/details/51910937