--Java HttpClient使用小结
http://blog.csdn.net/bhq2010/article/details/9210007
--HttpClient的HttpGet和HttpPost工具类
http://blog.csdn.net/william_wei007/article/details/75330686
--通过 GET方式传值的时候,+号会被浏览器处理为空,需要转换为%2b
https://blog.csdn.net/after_you/article/details/77834228
public class salaryPay { public static String url = "http://192.168.5.138:8033/";// test环境 private static String check = url + "newApi/card/salaryPay"; public static void main(String[] args) { HttpUtil.httpPost(check, null, new HttpCallBackListener() { @Override public void success(int response, Header[] headers, String result) { System.out.print(response + "响应数据----" + result); } @Override public void failure(int response) { System.err.print(response); } }); } }
/** * HttpClient */ private static final HttpClient client= getHttpClientInstance(); /** * 单例 使Httpclient支持https */ private static HttpClient getHttpClientInstance() { X509TrustManager x509mgr = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] xcs, String string) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String string) { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; SSLContext sslContext = null; try { sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.SSL); sslContext.init(null, new TrustManager[] { x509mgr }, null); } catch (NoSuchAlgorithmException | KeyManagementException e) { logger.error("error to init httpclient", e); } SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); connManager.setMaxTotal(200);// 客户端总并行链接最大数 connManager.setDefaultMaxPerRoute(20); // 每个主机的最大并行链接数 HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); httpClientBuilder.setConnectionManager(connManager); httpClientBuilder.setSSLSocketFactory(sslsf); return httpClientBuilder.build(); } /** * HttpEntity转化返回为byte数组 * */ private static byte[] doChangeEntity2Bytes(HttpEntity entity) throws Exception { InputStream inputStream = null; try { if (entity == null || entity.getContent() == null) { throw new RuntimeException("Response Entity Is null"); } inputStream = entity.getContent(); ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); return out.toByteArray(); } finally { if (inputStream != null) { inputStream.close(); } } } /** * HttpPost */ private static byte[] doHttpPostFun(String address, HttpEntity paramEntity, RequestConfig config) throws Exception { HttpPost post = new HttpPost(address); try { if (paramEntity != null) { post.setEntity(paramEntity); } post.setConfig(config); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { int code = response.getStatusLine().getStatusCode(); throw new RuntimeException("HttpPost Request Access Fail Return Code(" + code + ")"); } HttpEntity entity = response.getEntity(); if (entity == null) { throw new RuntimeException("HttpPost Request Access Fail Response Entity Is null"); } return doChangeEntity2Bytes(entity); } finally { if (post != null) { post.releaseConnection(); } } } /** * HttpGet */ private static byte[] doHttpGetFun(String address, RequestConfig config) throws Exception { HttpGet get = new HttpGet(address); try { get.setConfig(config); HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { int code = response.getStatusLine().getStatusCode(); throw new RuntimeException("HttpGet Access Fail , Return Code(" + code + ")"); } response.getEntity().getContent(); return doChangeEntity2Bytes(response.getEntity()); } finally { if (get != null) { get.releaseConnection(); } } }
private static final Logger logger = LoggerFactory.getLogger(ClassDemo.class); private static final String type = "/demo/mat/{0}/{1}/{2}/Json"; @Value("${com.demo.check.url}") private String baseUrl; public EntityResponse checkCardNoAndBank(EntityRequest entityRequest) throws Exception { try { String url = baseUrl + type; logger.info("-->打印日志"url); String completeUrl = MessageFormat.format(url, URLEncoder.encode(entityRequest.getName(),"utf-8"),entityRequest.getNo(),URLEncoder.encode(entityRequest.getType(),"utf-8")); String json = HttpClientHelper.getDataByGetMethod(completeUrl); logger.info("json Resposne >>>" + json); return GsonUtils.convertObj(json, EntityResponse.class); }catch (Exception e){ e.printStackTrace(); return null; } }
private boolean doPostFun(Map<String, String> paramsMap){ boolean rtnFlag=false; if(null!=paramsMap&¶msMap.isEmpty()==false){ try { /** * 形式1:Content-Type: text/plain; charset=UTF-8 */ String paramJson = GsonUtils.toJson(paramsMap); HttpEntity paramEntity = new StringEntity(paramJson.toString(),"UTF-8"); respJson = HttpClientUtils.getMethodPostResponse(url, paramEntity); /** * 形式2:Content-Type: application/json;charset=utf-8 */ String paramJson = GsonUtils.toJson(paramsMap); StringEntity entity = new StringEntity(paramJson,"UTF-8"); entity.setContentType("application/json"); // //post请求 respJson = HttpClientUtils.getMethodPostResponse(url, entity); logger.info("正常->" + respJson); } catch (Exception e) { e.printStackTrace(); logger.info("异常->" + e.getMessage()); } ResponseDto result= GsonUtils.convertObj(respJson, ResponseDto.class); if (null!=result&&StringUtils.isNotBlank(result.getStatus())&&"1".equals(result.getStatus())) { //成功 logger.info("成功->cid="+paramsMap.get("cid")); rtnFlag=true; }else{ //失败 logger.info("失败->cid="+paramsMap.get("cid")); } } return rtnFlag; }
Http请求响应信息
================================================================= 【请求信息】 ID: 1091 Address: http://.../Info Encoding: UTF-8 Http-Method: POST Content-Type: application/json;charset=UTF-8 Headers: { Accept=[application/json, text/plain, */*], accept-encoding=[gzip, deflate], accept-language=[zh-CN,en-US;q=0.8], connection=[close], Content-Length=[399], content-type=[application/json;charset=UTF-8], cookie=[_fmdata=4500B47041D0BFFC9DD4B420764A5B0070658214442367DF663AD941615413F75382049B327144F56CE5D4438C8A6D1FF3B248B92A2159F9], host=[www.beta.ddcash.cn], origin=[http://www.beta.x.cn], referer=[http://www.beta.x.cn/], user-agent=[Mozilla/5.0 (Linux; Android 7.0; EVA-AL10 Build/HUAWEIEVA-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043124 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN], x-forwarded-for=[10.254.30.59], x-real-ip=[10.254.30.59], x-requested-with=[com.tencent.mm] } Payload: {"name":"value"} 【响应信息】 ID: 1091 Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Date=[Tue, 04 Jul 2017 17:14:55 GMT]} Payload: { "name":"value" } =================================================================