IOS博客項目搭建-17-發微博-發一張圖片

前面咱們完成了能夠發佈一條純文字的微博,如今來經過從相冊中獲取到的圖片,而後發一個帶有圖片的微博。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

輸入圖片說明

相關文章
相關標籤/搜索