1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
@Slf4j @Component public final class OkHttpUtil { private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private static final MediaType XML = MediaType.parse("application/xml; charset=utf-8");
@Autowired private OkHttpClient okHttpClient;
public String doGet(String url) { return doGet(url, null, null); }
public String doGet(String url, Map<String, String> params) { return doGet(url, params, null); }
public String doGet(String url, String[] headers) { return doGet(url, null, headers); }
public String doGet(String url, Map<String, String> params, String[] headers) { StringBuilder sb = new StringBuilder(url); if (params != null && params.keySet().size() > 0) { boolean firstFlag = true; for (String key : params.keySet()) { if (firstFlag) { sb.append("?").append(key).append("=").append(params.get(key)); firstFlag = false; } else { sb.append("&").append(key).append("=").append(params.get(key)); } } }
Request.Builder builder = new Request.Builder(); if (headers != null && headers.length > 0) { if (headers.length % 2 == 0) { for (int i = 0; i < headers.length; i = i + 2) { builder.addHeader(headers[i], headers[i + 1]); } } else { log.warn("headers's length[{}] is error.", headers.length); }
}
Request request = builder.url(sb.toString()).build(); log.info("do get request and url[{}]", sb.toString()); return execute(request); }
public String doPost(String url, Map<String, String> params) { FormBody.Builder builder = new FormBody.Builder();
if (params != null && params.keySet().size() > 0) { for (String key : params.keySet()) { builder.add(key, params.get(key)); } } Request request = new Request.Builder().url(url).post(builder.build()).build(); log.info("do post request and url[{}]", url);
return execute(request); }
public String doPostJson(String url, String json) { log.info("do post request and url[{}]", url); return exectePost(url, json, JSON); }
public String doPostXml(String url, String xml) { log.info("do post request and url[{}]", url); return exectePost(url, xml, XML); }
private String exectePost(String url, String data, MediaType contentType) { RequestBody requestBody = RequestBody.create(contentType, data); Request request = new Request.Builder().url(url).post(requestBody).build();
return execute(request); }
private String execute(Request request) { Response response = null; try { response = okHttpClient.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } } catch (Exception e) { log.error("OkHttp 调用失败", e); } finally { if (response != null) { response.close(); } } return ""; } }
|