package httpclient.httpclient; import java.io.IOException; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; public class HttpClientUtil { public void testPost() { //1.创建客户端访问服务器的httpclient对象 CloseableHttpClient httpClient = HttpClientBuilder.create().build(); //2.定义请求的url String url = "https://XXX.XXX.com/NC1000001"; //3.以请求的连接地址创建get/post请求对象 HttpPost post = new HttpPost(url); //如果有header请求,添加header请求 post.addHeader("x-api-key", "XXX"); post.addHeader("x-lang", "en-US"); try { //4.向服务器发送请求,并获取返回数据 CloseableHttpResponse response = httpClient.execute(post); //获取返回的所有headers Header[] headers = response.getAllHeaders(); for (Header header : headers) { System.out.println(header); } //获取返回的状态 int status = response.getStatusLine().getStatusCode(); System.out.println(status); //获取HttpEntity消息载体对象 HttpEntity entity = response.getEntity(); // EntityUtils中的toString()方法转换服务器的响应数据 String str = EntityUtils.toString(entity, "utf-8"); System.out.println("服务器的响应是:" + str); //5.关闭连接 httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { HttpClientUtil util = new HttpClientUtil(); util.testPost(); } }
httpClientRequest
package modeHttp; import java.util.HashMap; import java.util.Map; public class HttpClientRequest { private String url; private Map<String,String> headers = new HashMap<String,String>(); private String body; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Map<String, String> getHeaders() { return headers; } public void setHeaders(Map<String, String> headers) { this.headers = headers; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } }
HttpClientRespon
package modeHttp; import java.util.HashMap; import java.util.Map; public class HttpClientResponse { private String statusCode; private Map<String,String> header = new HashMap<String,String>(); private String body; public String getStatusCode() { return statusCode; } public void setStatusCode(String statusCode) { this.statusCode = statusCode; } public Map<String, String> getHeader() { return header; } public void setHeader(Map<String, String> header) { this.header = header; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } }
HttpHelper
package Utils; import java.io.IOException; import java.util.HashMap; import java.util.Map; import modeHttp.HttpClientResponse; import org.apache.http.Header; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.testng.log4testng.Logger; import Http.HttpClientRequest; public class HttpHelper { HttpClientRequest httpClientRequest; CloseableHttpClient httpClient ; public CloseableHttpClient getHttpClient() { return httpClient; } public void setHttpClient(CloseableHttpClient httpClient) { this.httpClient = httpClient; } private static Logger logger = Logger.getLogger(HttpHelper.class); /* * 获取链接 */ public void init() { httpClient = HttpClientBuilder.create().build(); } /* * 关闭链接 */ public void close() { try { httpClient.close(); } catch (IOException e) { logger.error(""); logger.error(e.getMessage()); } } /* * 调用接口 */ public HttpClientResponse sendrequest(HttpClientRequest httpClientRequest,HttpRequestBase httpRequestBase) { String url = httpClientRequest.getUrl(); CloseableHttpResponse response = null; String encodingofBody = "ISO-8859-1"; HttpClientResponse httpClientResponse = null; Map<String,String> headers = httpClientRequest.getHeaders(); //设置header,包含Conent-Type for(String header:headers.keySet()) { httpRequestBase.setHeader(header, headers.get(header)); //获取编码方式 if(header.toLowerCase().equals("Conent-Type")) { if(headers.get(header).split(";").length >= 2) { encodingofBody = headers.get(header).split(";")[1].split("=")[1]; } } } //判定是否有方法是否有body,再设置body if(httpRequestBase instanceof HttpEntityEnclosingRequestBase) { ((HttpEntityEnclosingRequestBase) httpRequestBase).setEntity(new StringEntity(httpClientRequest.getBody(),encodingofBody)); } try { response = httpClient.execute(httpRequestBase); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } httpClientResponse.setBody(response.getEntity().toString()); Header[] headerResponses = response.getAllHeaders(); Map<String,String> headerResponseMap = new HashMap<String,String>(); for(Header headerResponse:headerResponses) { headerResponseMap.put(headerResponse.getName(),headerResponse.getValue()); } httpClientResponse.setHeader(headerResponseMap); httpClientResponse.setStatusCode(String.valueOf(response.getStatusLine().getStatusCode())); return httpClientResponse; } public HttpClientResponse doGet(HttpClientRequest httpClientRequest) { HttpHelper helper = new HttpHelper(); HttpClientResponse httpClientResponse; helper.init(); String url = httpClientRequest.getUrl(); HttpGet get = new HttpGet(url); httpClientResponse = helper.sendrequest(httpClientRequest, get); helper.close(); return httpClientResponse; } public String fromeUrl(String url,Map<String,String> params) { String result; StringBuffer urlTest = new StringBuffer(url); urlTest.append("?"); for(String param:params.keySet()) { urlTest.append(param).append("=").append(params.get(param)).append("&"); } return result = urlTest.toString().substring(0,urlTest.length()-1); } }