国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android OkHttp Post上傳文件并且攜帶參數實例詳解

2019-10-23 18:33:22
字體:
來源:轉載
供稿:網友

Android OkHttp Post上傳文件并且攜帶參數

這里整理一下 OkHttp 的 post 在上傳文件的同時,也要攜帶請求參數的方法。

使用 OkHttp 版本如下:

compile 'com.squareup.okhttp3:okhttp:3.4.1'

代碼如下:

protected void post_file(final String url, final Map<String, Object> map, File file) {    OkHttpClient client = new OkHttpClient();    // form 表單形式上傳    MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);    if(file != null){      // MediaType.parse() 里面是上傳的文件類型。      RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);      String filename = file.getName();      // 參數分別為, 請求key ,文件名稱 , RequestBody      requestBody.addFormDataPart("headImage", file.getName(), body);    }    if (map != null) {      // map 里面是請求中所需要的 key 和 value      for (Map.Entry entry : map.entrySet()) {        requestBody.addFormDataPart(valueOf(entry.getKey()), valueOf(entry.getValue()));      }    }    Request request = new Request.Builder().url("請求地址").post(requestBody.build()).tag(context).build();    // readTimeout("請求超時時間" , 時間單位);    client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {      @Override      public void onFailure(Call call, IOException e) {        Log.i("lfq" ,"onFailure");      }      @Override      public void onResponse(Call call, Response response) throws IOException {        if (response.isSuccessful()) {          String str = response.body().string();          Log.i("lfq", response.message() + " , body " + str);        } else {          Log.i("lfq" ,response.message() + " error : body " + response.body().string());        }      }    });  }

這里說明一點,就是 MultipartBody.Builder 的 addFormDataPart 方法,是對于之前的 addPart 方法做了一個封裝,所以,不需要再去配置 Header 之類的。

如果只是單純的 Post 攜帶參數,那么直接使用 FormBody ,代碼如下:

FormBody.Builder formBody = new FormBody.Builder();if (map != null) {  for (Map.Entry entry : map.entrySet()) {    formBody.add(String.valueOf(entry.getKey()),String.valueOf(entry.getValue()));  }}

以上只是針對項目中遇到的問題進行整理,需要了解更多,請自行查閱大神們的解析。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

 

注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 象州县| 萨嘎县| 平顺县| 无为县| 龙井市| 临洮县| 靖安县| 霸州市| 周宁县| 康定县| 融水| 三台县| 西华县| 石城县| 福州市| 都安| 枣庄市| 湖南省| 昂仁县| 甘肃省| 运城市| 泰顺县| 潜江市| 丰顺县| 合阳县| 西安市| 宁陕县| 肥城市| 平阴县| 佛学| 鹿泉市| 连山| 原阳县| 栾城县| 蒙阴县| 津市市| 错那县| 攀枝花市| 迁安市| 卓尼县| 吉林市|