OKhttp封装的工具类 可以拷到自己项目中直接用


import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.util.Log;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
/**
 * OKHttp3上传工具类
 * */
public class OkUtils {
	private Context ctx;
	private static OkHttpClient ok=null;
	private static final MediaType MEDIA_TYPE_PNG=MediaType.parse("image/png");
	private Map<String, String> map=new HashMap<String, String>();//存放
	private List<String> list=new ArrayList<String>();
	private static File file;
	private static String imgpath;
	private static String imageName;
	private OkUtils(){

	};
	/*
	 *单例获取 
	 * */
	public static OkHttpClient getInstance() {
		if (ok == null) {
			synchronized (OkUtils.class) {
				if (ok == null)
					ok = new OkHttpClient();
			}
		}
		return ok;
	}
	/*
	 * 键值对上传数据
	 * */
	public static void UploadSJ(String url,Map<String, String> map,Callback callback){
		FormBody.Builder builder=new FormBody.Builder();
		//遍历map中所有的参数到builder
		for (String key : map.keySet()) {
			builder.add(key, map.get(key));
			Log.e("", "key: "+key+"   map.get:  "+map.get(key));
		}
		Request request = new Request.Builder()
				.url(url)
				.post(builder.build())
				.build();
		Call call = getInstance().newCall(request);
		call.enqueue(callback);
	}
	/*
	 * 上传一张图片带参数
	 * */
	public static void UploadFileCS(String url,String key1,String path,Map<String, String> map,Callback callback){
		String imagpath = path.substring(0, path.lastIndexOf("/"));
		String imgName []=path.split("/");
		for(int i=0;i<imgName.length;i++){
			if(i==imgName.length-1){
				String name=imgName[i];
				file = new File(imagpath, name);
			}
		}
		MultipartBody.Builder builder=new MultipartBody.Builder().setType(MultipartBody.FORM);
		RequestBody fileBody=RequestBody.create(MEDIA_TYPE_PNG, file);
		//遍历map中所有的参数到builder
		for (String key : map.keySet()) {
			builder.addFormDataPart(key, map.get(key));
		}
		//讲文件添加到builder中
		builder.addFormDataPart(key1,file.getName(),fileBody);
		//创建请求体
		RequestBody requestBody=builder.build();

		Request request=new Request.Builder().url(url).post(requestBody).build();
		Call call = getInstance().newCall(request);
		call.enqueue(callback);
	}
	/*
	 *上传多个图片文件 
	 * */
	@SuppressWarnings("unused")
	public static void UploadFileMore(String url,List<String> paths,Callback callback){
		if(paths!=null){
			//创建文件集合
			List<File> list=new ArrayList<File>();
			//遍历整个图片地址
			for (String str : paths) {
				//截取图片地址:/storage/emulated/0
				imgpath = str.substring(0, str.lastIndexOf("/"));
				//将图片路径分解成String数组
				String [] imgName=str.split("/");
				for (int i = 0; i < imgName.length; i++) {
					if(i==imgName.length-1){
						imageName = imgName[i];//获取图片名称
						File file=new File(imgpath, imageName);
						list.add(file);
					}
				}
			}
			MultipartBody.Builder builder=new MultipartBody.Builder();
			builder.setType(MultipartBody.FORM);//设置表单类型
			//遍历图片文件
			for (File file : list) {
				if(file!=null){
					builder.addFormDataPart("acrd", file.getName(),RequestBody.create(MEDIA_TYPE_PNG, file));
				}
			}
			//构建请求体
			MultipartBody requestBody=builder.build();
			Request request=new Request.Builder().url(url).post(requestBody).build();
			Call call = getInstance().newCall(request);
			call.enqueue(callback);
		}

	}
	/*
	 * 上传多张图片带参数
	 * */
	@SuppressWarnings("unused")
	public static void UploadFileSCMore(String url,String value,List<String> paths,Map<String, String> map,Callback callback){
		if(paths!=null&&map!=null){
			//创建文件集合
			List<File> list=new ArrayList<File>();
			//遍历整个图片地址
			for (String str : paths) {
				//截取图片地址:/storage/emulated/0
				imgpath = str.substring(0, str.lastIndexOf("/"));
				//将图片路径分解成String数组
				String [] imgName=str.split("/");
				for (int i = 0; i < imgName.length; i++) {
					if(i==imgName.length-1){
						imageName = imgName[i];//获取图片名称
						File file=new File(imgpath, imageName);
						list.add(file);
					}
				}
			}
			MultipartBody.Builder builder=new MultipartBody.Builder();
			builder.setType(MultipartBody.FORM);//设置表单类型
			//遍历图片文件
			for (File file : list) {
				if(file!=null){
					builder.addFormDataPart(value, file.getName(),RequestBody.create(MEDIA_TYPE_PNG, file));
				}
			}
			//遍历map中所有的参数到builder
			for (String key : map.keySet()) {
				builder.addFormDataPart(key, map.get(key));
			}
			RequestBody requestBody=builder.build();

			Request request=new Request.Builder().url(url).post(requestBody).build();
			Call call = getInstance().newCall(request);
			call.enqueue(callback);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你封装一个简单的OkHttp工具类。以下是一个示例代码,你可以根据自己的需求进行修改和扩展: ```java import okhttp3.*; import java.io.IOException; import java.util.Map; public class OkHttpUtils { private static OkHttpClient client; private static OkHttpClient getClient() { if (client == null) { client = new OkHttpClient(); } return client; } public static String get(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); try (Response response = getClient().newCall(request).execute()) { if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); } } } public static String post(String url, Map<String, String> params) throws IOException { FormBody.Builder formBodyBuilder = new FormBody.Builder(); for (Map.Entry<String, String> entry : params.entrySet()) { formBodyBuilder.add(entry.getKey(), entry.getValue()); } RequestBody requestBody = formBodyBuilder.build(); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); try (Response response = getClient().newCall(request).execute()) { if (response.isSuccessful()) { return response.body().string(); } else { throw new IOException("Unexpected code " + response); } } } } ``` 这个工具类封装了get和post方法,可以发送HTTP请求并返回响应结果。你可以使用`OkHttpUtils.get(url)`发送GET请求,或者使用`OkHttpUtils.post(url, params)`发送POST请求。其,url是请求的URL,params是POST请求的参数。 请注意,这只是一个简单的封装示例,你可以根据自己的项目需求进行扩展和优化。例如,可以添加超时设置、请求头配置等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值