引入 Okhttp 依赖
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.9.1</version> <scope>compile</scope> </dependency>
网络请求
普通类型的网络请求
String url = "xxx.com/api/queryUserInfo"; Map<Object,Object> params = new HashMap<>(); Map<Object, Object> headers = new HashMap<>(); //添加请求体参数 params.put("userid","123456789"); //添加请求头参数 headers.put("token","41f05413-381c-4060-b8a1-acc6c5997164"); //GET 请求 String respone = okHttpPlugin.http(url, OkHttpPlugin.HttpMethod.GET, params, headers); //POST 请求 String respone = okHttpPlugin.http(url, OkHttpPlugin.HttpMethod.POST, params, headers);
POST 请求 提交 JSON 数据
String url = "xxx.com/api/queryUserInfo"; Map<Object,Object> body = new HashMap<>(); body.put("userid","123456789"); //序列化为JSON字符串 String bodyJson = GsonPlugin.toJson(body); //提交请求 String respone = okHttpPlugin.http(url, bodyJson, OkHttpPlugin.MEDIA_TYPE_JSON);
下载文件 | 获取原始的 Respone
String url = "xxx.com/api/queryUserInfo"; Map<Object,Object> params = new HashMap<>(); Map<Object, Object> headers = new HashMap<>(); //添加请求体参数 params.put("userid","123456789"); //添加请求头参数 headers.put("token","41f05413-381c-4060-b8a1-acc6c5997164"); //GET 请求 Response respone = okHttpPlugin.httpResponeBody(url, OkHttpPlugin.HttpMethod.GET, params, headers); //POST 请求 Response respone = okHttpPlugin.httpResponeBody(url, OkHttpPlugin.HttpMethod.POST, params, headers); //获取响应头 Headers responeHeaders = respone.headers(); //获取字符串 (如果响应格式是字符串的话 可以直接获取) String string = respone.body().string(); //获取输入流 InputStream inputStream = respone.body().byteStream(); FileOutputStream outputStream = null; try { //下载文件 outputStream = new FileOutputStream(new File("D://123456.mp4")); byte by[] = new byte[1024]; int len = -1; while ((len = inputStream.read(by))!=-1){ outputStream.write(by,0,len); } }catch (Exception e){ e.printStackTrace(); }finally { if (respone!=null) { respone.close(); } if (outputStream!=null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
OkHttp 工具类
import com.yscall.kulaidian.constant.ConstantConfig; import com.yscall.kulaidian.utils.EmptyUtils; import okhttp3.*; import org.springframework.stereotype.Component; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; /** * Created by Pencilso on 2018/10/10/012. * 网络请求框架 * * @author Pencilso */ @Component public class OkHttpPlugin { public static final MediaType MEDIA_TYPE_XML = MediaType.parse("application/xml"); public static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json"); private static OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(ConstantConfig.Reptilian.REPTILIAN_VIDEO_TIMEOUT, TimeUnit.MILLISECONDS) .readTimeout(ConstantConfig.Reptilian.REPTILIAN_VIDEO_TIMEOUT, TimeUnit.MILLISECONDS) .build(); public enum HttpMethod { POST, GET } public Response httpResponeBody(String url, HttpMethod httpMethod) { return httpResponeBody(url, httpMethod, null); } public Response httpResponeBody(String url, HttpMethod httpMethod, Map<Object, Object> paramster) { return httpResponeBody(url, httpMethod, paramster, null); } public Response httpResponeBody(String url, HttpMethod httpMethod, Map<Object, Object> paramster, Map<Object, Object> header) { try { Request request = builderRequest(url, httpMethod, paramster, header); Response execute = okHttpClient.newCall(request).execute(); return execute; } catch (Exception e) { e.printStackTrace(); } return null; } public String http(String url, HttpMethod httpMethod) { return http(url, httpMethod, null, null); } public String http(String url, HttpMethod httpMethod, Map<Object, Object> paramster) { return http(url, httpMethod, paramster, null); } public String http(String url, HttpMethod httpMethod, Map<Object, Object> paramster, Map<Object, Object> header) { Response response = httpResponeBody(url, httpMethod, paramster, header); try { String string = response.body().string(); return string; } catch (Exception e) { e.printStackTrace(); } finally { if (response != null) { response.close(); } } return null; } public String http(String url, String context, MediaType mediaType, Map<Object, Object> header) { try { RequestBody body = RequestBody.create(mediaType, context); Request.Builder post = new Request.Builder() .url(url) .post(body); if (header != null && header.size() != 0) { Set<Map.Entry<Object, Object>> entries = header.entrySet(); for (Map.Entry<Object, Object> entry : entries) { String key = (String) entry.getKey(); String value = (String) entry.getValue(); if (EmptyUtils.isNull(key, value)) continue; post.addHeader(key, value); } } Request build = post.build(); Response execute = okHttpClient.newCall(build).execute(); return execute.body().string(); } catch (Exception e) { e.printStackTrace(); } return null; } public String http(String url, String context, MediaType mediaType) { return http(url, context, mediaType, null); } private Request builderRequest(String url, HttpMethod httpMethod, Map<Object, Object> paramster, Map<Object, Object> header) { Request.Builder builder = new Request.Builder(); if (httpMethod == HttpMethod.POST) { //POST 请求 FormBody.Builder formBody = new FormBody.Builder(); forEachMap(paramster, ((key, value) -> formBody.add(key, value))); builder.post(formBody.build()).url(url); } else if (httpMethod == HttpMethod.GET) { //GET 请求 if (paramster != null && paramster.size() != 0) { StringBuffer sf = new StringBuffer("?"); forEachMap(paramster, ((key, value) -> sf.append(key).append("=").append(value).append("&"))); url += sf.toString(); } builder.url(url); } //统一添加请求头 forEachMap(header, (key, value) -> builder.addHeader(key, value)); return builder.build(); } private void forEachMap(Map<Object, Object> map, MapForInterface mapForInterface) { if (map != null && map.size() != 0) { Set<Map.Entry<Object, Object>> entries = map.entrySet(); for (Map.Entry<Object, Object> entry : entries) { mapForInterface.result(String.valueOf(entry.getKey()), String.valueOf(entry.getValue())); } } } interface MapForInterface { void result(String key, String value); } }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于