前面咱們完成了能夠發佈一條純文字的微博,如今來經過從相冊中獲取到的圖片,而後發一個帶有圖片的微博。json
關於發送微博的接口,能夠查詢新浪的開放平臺微博API接口文檔,咱們找到上傳圖片併發布一條新微博的接口,https://upload.api.weibo.com/2/statuses/upload.jsonapi
###請求參數併發
###文件上傳的參數pic不能和普通的字符串參數混在一塊兒,須要用不一樣的方法分開處理。app
舊的將文件和普通參數寫在一塊兒的方法(經測試,該方法不能發送圖片)工具
// 2.封裝請求參數 NSMutableDictionary *params = [NSMutableDictionary dictionary]; // 發送內容 params[@"status"] = self.textView.text; // 根據以前封裝的帳號工具類IWAccountTool,登錄受權的帳號信息被保存在本地,而後經過帳號屬性獲取access_token params[@"access_token"] = [IWAccountTool account].access_token; // 上傳圖片(是否壓縮,壓縮質量爲0.6,原圖爲1.0) params[@"pic"] = UIImageJPEGRepresentation(self.imageView.image, 0.6); // 3.發送請求 [mgr POST:@"https://upload.api.weibo.com/2/statuses/upload.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { [MBProgressHUD showSuccess:@"恭喜,發送成功"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 隱藏提醒框 [MBProgressHUD showError:@"抱歉,發送失敗"]; }];
將文件和普通參數分開寫的方法測試
/** * 發有圖片微博 */ - (void)sendWithImage { // AFNetworking\AFN // 1.建立請求管理對象 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // 2.封裝請求參數 NSMutableDictionary *params = [NSMutableDictionary dictionary]; // 發送內容 params[@"status"] = self.textView.text; // 根據以前封裝的帳號工具類IWAccountTool,登錄受權的帳號信息被保存在本地,而後經過帳號屬性獲取access_token params[@"access_token"] = [IWAccountTool account].access_token; // 上傳圖片(是否壓縮,壓縮質量爲0.6,原圖爲1.0) // params[@"pic"] = UIImageJPEGRepresentation(self.imageView.image, 0.6); // 3.發送請求 /* [mgr POST:@"https://upload.api.weibo.com/2/statuses/upload.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { [MBProgressHUD showSuccess:@"恭喜,發送成功"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 隱藏提醒框 [MBProgressHUD showError:@"抱歉,發送失敗"]; }]; */ [mgr POST:@"https://upload.api.weibo.com/2/statuses/upload.json" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 在發送請求以前調用這個block //必須在這裏說明須要上傳哪些文件 NSData *data = UIImageJPEGRepresentation(self.imageView.image, 0.6); [formData appendPartWithFileData:data name:@"pic" fileName:@"text.jpg" mimeType:@"image/jpeg"]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { [MBProgressHUD showSuccess:@"恭喜,發送成功"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 隱藏提醒框 [MBProgressHUD showError:@"抱歉,發送失敗"]; }]; // 4.關閉控制器。當用戶點擊發送微博按鈕後,須要將發微博界面關掉,由於發微博有時可能須要很長時間 [self dismissViewControllerAnimated:YES completion:nil]; }
OK, 發送帶有一張圖片的微博完美實現^_^code