JAVA远程访问url并传递JSON格式字符串数据
使用org.apache.http下的工具类访问url,并传递json格式的数据字符串,可使用CookieStore
传递cookie的JSESSIONID数据,也可以为null。
public static Map sendUrlJsonData(String url, String json, CookieStore cookieStore) {Map map=new HashMap<>();
final String CONTENT_TYPE_TEXT_JSON = "text/json";
CloseableHttpClient buildSSLCloseableHttpClient = createSSLClientCookie(cookieStore);
// 设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(30000).setConnectTimeout(30000).build();
try {
System.setProperty("jsse.enableSNIExtension", "false");
HttpPost request = new HttpPost(url);
request.setConfig(requestConfig);
request.setHeader("Content-Type", "application/json;charset=UTF-8");
StringEntity stringEntity = new StringEntity(json);stringEntity.setContentType(CONTENT_TYPE_TEXT_JSON);
request.setEntity(stringEntity);
HttpResponse httpResponse = buildSSLCloseableHttpClient.execute(request);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
map.put("data", EntityUtils.toString(httpResponse.getEntity(), "utf-8"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
buildSSLCloseableHttpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
public static CloseableHttpClient createSSLClientCookie( CookieStore cookieStore) { SSLContext sslContext; try { sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { // 信任所有 @Override public boolean isTrusted(X509Certificate[] xcs, String string) { return true; } }).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( sslContext); if (cookieStore != null) { return HttpClients.custom().setDefaultCookieStore(cookieStore) .setSSLSocketFactory(sslsf).build(); } else { return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } } catch (Exception e) { e.printStackTrace(); } return HttpClients.createDefault(); }