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

首頁 > 系統 > Android > 正文

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

2019-12-12 03:15:24
字體:
來源:轉載
供稿:網友

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()));  }}

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临泽县| 揭阳市| 交口县| 饶河县| 江山市| 宜宾市| 新营市| 龙井市| 贵州省| 滨海县| 古丈县| 大宁县| 通榆县| 浑源县| 德安县| 鄢陵县| 海口市| 松原市| 西乌珠穆沁旗| 饶河县| 鄂温| 威宁| 福海县| 喀喇| 察哈| 高邑县| 长乐市| 荥经县| 镇沅| 务川| 子长县| 云林县| 揭东县| 防城港市| 三江| 辰溪县| 买车| 楚雄市| 新巴尔虎左旗| 宁安市| 都江堰市|