前言
由于前段时间参加学校比赛,都没有时间来更新博客,这里给大家带来一篇非常实用的文章
本文类容
安卓如何通过okhttp2.0上传数据、文件,而我们的后端采用的是spring boot2.0来接收我们的上传的数据
前期准备
1、导入箭头所指向的这两个包,如果没有则点击这里进行下载https://download.csdn.net/download/weixin_43055096/11148006
2、由于我们要上传文件图片,所以我们必须要加入权限,而安卓6.0之后对权限要求很严格,不仅要在xml里面配置,还要写到我们的程序中。(按照小编的写法写好我们的xml,后面的还会说道我们手动权限的配置)
之后我们就可以开始我们的数据上传了。
这里小编给大家写了一个工具类,
package activity.sleephousekeeper.Utils;
import android.util.Log;
import java.io.File;
import java.util.Map;
import java.util.Set;
import okhttp3.Call;
import okhttp3.FormBody;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
public class OkhttpUtil {
private static OkhttpUtil instance;
private OkhttpUtil(){
}
public static OkhttpUtil getInstance(){
if(instance == null){
instance = new OkhttpUtil();
}
return instance;
}
/**
* 通过get 提交
* @param url
* @return
*/
public Call get(String url){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = client.newCall(request);
return call;
}
/**
* 通过post方式提交表单
* @param url 提交地址
* @param map 表单数据
* @return Call
*/
public Call post(String url, Map<String,Object> map){
OkHttpClient client = new OkHttpClient();
FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体
Set<String> keys = map.keySet();
for(String k:keys){
formBody.add(k,map.get(k).toString());
}
Request request = new Request.Builder()
.url(url)
.post(formBody.build())
.build();
return client.newCall(request);
}
/**
* 通过post提交json数据
* @param url 提交地址
* @param json 提交的实例
* @return call
*/
public Call post(String url,String json){
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")