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檔案,也就是需要把檔案傳上去, 而且有其他的引數,如果用普