1. 程式人生 > >Android OkHttp Post上傳檔案並且攜帶引數

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 OkHttp Post檔案並且攜帶引數

這裡整理一下 OkHttp 的 post 在上傳檔案的同時,也要攜帶請求引數的方法。 使用 OkHttp 版本如下: compile 'com.squareup.okhttp3:okhttp:3.4.1' 程式碼如下: protected void po

OkHttp Post檔案,攜帶引數

使用 OkHttp 版本如下: compile 'com.squareup.okhttp3:okhttp:3.4.1' public void upLoadFile(final

okhttp post 檔案以及Multipart/form-data 的學習理解

在app 中,最基本的設定使用者頭像,需要進行頭像的圖片上傳,那就會使用到 post 進行上傳檔案的操作。必然要了解下 Multipart/form-data 的含義。以前在寫這部分程式碼的時候,不理解Headers.of(xxx)什麼意思,而且 裡面填寫的格式

android http通過post檔案和提交引數(通過拼裝協議)

HttpURLConnection conn = null; DataOutputStream outStream = null;try{           String BOUNDARY = "---------------------------7da2137580

OKhttp post檔案

 /**      * java.io.FileNotFoundException: /storage/emulated/0/note01.md: open failed: EACCES (Permission denied)      * 檔案未找到的異常....開啟失敗

okhttp檔案攜帶引數

一個小工具類用來post json字串和檔案上傳並且帶引數外加忽略https證書認證 1 上傳檔案和引數 public class NetWorkUtilsHttps { public static final MediaType JSON = MediaType

Ajax檔案攜帶引數

HTML程式碼 <div class="form-group"> <label class="col-sm-2 control-label">檔案上傳</label> <div class="col-sm-10"

Httpclient 以multipart/form-data形式post檔案及提交引數

在大學裡由於要做某些英語聽力作業,是在PC客戶端上的,而做完提交後顯示的答案又沒辦法複製,再重新填寫的話答案就消失了,所以懶得去記,好在答案圖片並不複雜,便想做一個可以識別出圖片中的英文的小軟體。因為我自己並沒有做OCR的經驗,於是我就到網上找可以線上識別文字的網站,找著找著

HttpClient通過post檔案和提交引數

       //new一個DiskFileItemFactory型別的物件factory(檔案工廠)                   DiskFileItemFactory factory = new DiskFileItemFactory();                   //為factory

httpclient:與springmvc進行跨域傳輸,檔案攜帶引數——使用HttpPost方式

一.上傳檔案1.HttpClient類/** * @param file * @param url */ public static void uploadFileByHttpPost(File file, String url) { CloseableHt

.Net使用HttpClient以multipart/form-data形式post檔案及其相關引數

  目錄導航:      前言:      什麼是multipart/form-data請求:      Html上傳圖片按鈕:

Android POST檔案

/** * 上傳檔案到伺服器類 *  * @author tom */public class UploadUtil {    private static final String TAG = "uploadFile";    private static final i

OkHttp 3.0之後版本GET、POST請求以及POST檔案的示例程式碼

首先說一下2.x到3.x關於POST請求的請求體類的改變: 在2.x中是 類名是:FormEncodingBuilder() 在3.x中是 類名是: FormBody,但是一般使用是 FormBody.builder() 目前網上很多示例程式碼都是

android post檔案到伺服器

/***************通過拼接的方式構造請求內容,實現引數傳輸以及檔案傳輸****************/ public static String post(String url, Map<String, String> params

C#中PUT和POST檔案

HttpClient中上傳檔案 上一篇主要是提到了HttpClient幫助類,這次針對於上傳檔案進行補充,僅做記錄 public static string HttpUploadFile(string url, string path) {

C# WebApi Post檔案大小限制

需要修改兩個地方   一般都在  web.config裡 <configuration> <system.web> <httpRuntime maxRequestLength="102400" executionTi

POST檔案

原文:https://blog.csdn.net/xiaojianpitt/article/details/6856536 POST上傳檔案 最早的HTTP POST是不支援檔案上傳的,給程式設計開發帶來很多問題。但是在1995年,ietf出臺了rfc1867,也就是《RFC 186

ajax 檔案post檔案,ajax 提交 JSON 格式的資料

ajax簡介 前後臺做資料互動 前後端做資料互動的方式(三種):     (1)瀏覽器視窗輸入地址(get的方式)(2)form表單提交資料(3)ajax提交資料 特點 特點:  (1)非同步       非同步與同步的區別:同步是請求發過去,要等著迴應;非同步不

httpclient post 檔案

@RequestMapping(value = "/uploadChatPicture", method = { RequestMethod.GET, RequestMethod.POST })     @ResponseBody     public Map<Stri

使用Httpclient(post請求)檔案及其他引數到https協議的伺服器

最近有一個需求要用到httpclient大概如下:    運用httpclient傳送請求到一個https的伺服器,其中一個引數就是一個xml檔案,也就是需要把檔案傳上去, 而且有其他的引數,如果用普