先工具类
package com.bhy.bdai.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class OkHttpClientUtil { private static int connTimeOut = 5; private static int readTimeOut = 20; private static int writeTimeOut = 10; public static OkHttpClient client = null; static { client = new OkHttpClient.Builder() .connectTimeout(5L, TimeUnit.SECONDS) .readTimeout(20L, TimeUnit.SECONDS) .writeTimeout(10L, TimeUnit.SECONDS) .retryOnConnectionFailure(true) .build(); } public OkHttpClientUtil() { } public static String doGet(String host, String path, Map<String, String> headers, Map<String, String> querys) throws Exception { StringBuffer url = new StringBuffer(host + (path == null?"":path)); if(querys != null) { url.append("?"); Iterator iterator = querys.entrySet().iterator(); while(iterator.hasNext()) { Map.Entry<String, String> e = (Map.Entry)iterator.next(); url.append((String)e.getKey()).append("=").append((String)e.getValue() + "&"); } url = new StringBuffer(url.substring(0,url.length()-1)); } Request.Builder requestBuilder = new Request.Builder(); if(headers != null && headers.size() > 0) { Iterator iterator = headers.keySet().iterator(); while(iterator.hasNext()) { String key = (String)iterator.next(); requestBuilder.addHeader(key, (String)headers.get(key)); } } Request request = (requestBuilder).url(url.toString()).build(); Response response = client.newCall(request).execute(); String responseStr = response.body() == null?"":response.body().string(); return responseStr; } public static String doPost(String url, Map<String, String> headers, Map<String, String> querys) throws Exception { FormBody.Builder formbody = new FormBody.Builder(); if(null != querys){ Iterator iterator = querys.entrySet().iterator(); while(iterator.hasNext()) { Map.Entry<String, String> elem = (Map.Entry)iterator.next(); formbody.add((String)elem.getKey(), (String)elem.getValue()); } } RequestBody body = formbody.build(); Request.Builder requestBuilder = (new Request.Builder()).url(url); if(headers != null && headers.size() > 0) { Iterator iteratorHeader = headers.keySet().iterator(); while(iteratorHeader.hasNext()) { String key = (String)iteratorHeader.next(); requestBuilder.addHeader(key, (String)headers.get(key)); } } Request requet = requestBuilder.post(body).build(); Response response = client.newCall(requet).execute(); String responseStr = response.body() == null?"":response.body().string(); return responseStr; } public static String doPost(String url, Map<String, String> headers, String sendMessage) throws Exception { RequestBody body = FormBody.create(MediaType.parse("application/json"), sendMessage);; Request.Builder requestBuilder = (new Request.Builder()).url(url); if(headers != null && headers.size() > 0) { Iterator iteratorHeader = headers.keySet().iterator(); while(iteratorHeader.hasNext()) { String key = (String)iteratorHeader.next(); requestBuilder.addHeader(key, (String)headers.get(key)); } } Request requet = requestBuilder.post(body).build(); Response response = client.newCall(requet).execute(); String responseStr = response.body() == null?"":response.body().string(); return responseStr; } public static String doPut(String host, String path, Map<String, String> headers, Map<String, String> querys) throws Exception { FormBody.Builder builder = new FormBody.Builder(); Iterator iterator = querys.entrySet().iterator(); while(iterator.hasNext()) { Map.Entry<String, String> elem = (Map.Entry)iterator.next(); builder.add((String)elem.getKey(), (String)elem.getValue()); } RequestBody body = builder.build(); Request.Builder requestBuilder = (new Request.Builder()).url(host + path); if(headers != null && headers.size() > 0) { Iterator iteratorHeader = headers.keySet().iterator(); while(iteratorHeader.hasNext()) { String key = (String)iteratorHeader.next(); requestBuilder.addHeader(key, (String)headers.get(key)); } } Request requet = requestBuilder.put(body).build(); Response response = client.newCall(requet).execute(); String responseStr = response.body() == null?"":response.body().string(); return responseStr; } }
需要引入的是:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version>
看到FormBody类里面默认创建的MediaType是application/x-www-form-urlencoded。
所以进行非文件请求时,用这个工具类需要把map转为string后使用。
Map<String, String> body = new HashMap<>(); body.put("appid",String.valueOf(aid)); body.put("url",img); String bodys = JSONObject.toJSONString(body);
大多数情况下,接收返回值后都需要
JSONArray obj = JSON.parseArray(responsep);
JSONObject one = (JSONObject)obj.get(0);
这两个json工具处理,提取想要的内容。