http请求客户端

待我称王封你为后i 2022-12-21 03:22 330阅读 0赞
  1. import org.apache.http.Consts;
  2. import org.apache.http.HttpEntity;
  3. import org.apache.http.NameValuePair;
  4. import org.apache.http.client.ClientProtocolException;
  5. import org.apache.http.client.entity.UrlEncodedFormEntity;
  6. import org.apache.http.client.methods.*;
  7. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  8. import org.apache.http.conn.ssl.SSLContextBuilder;
  9. import org.apache.http.conn.ssl.TrustStrategy;
  10. import org.apache.http.entity.StringEntity;
  11. import org.apache.http.impl.client.CloseableHttpClient;
  12. import org.apache.http.impl.client.HttpClients;
  13. import org.apache.http.message.BasicNameValuePair;
  14. import org.apache.http.util.EntityUtils;
  15. import javax.net.ssl.SSLContext;
  16. import java.io.IOException;
  17. import java.security.cert.CertificateException;
  18. import java.security.cert.X509Certificate;
  19. import java.text.ParseException;
  20. import java.util.HashMap;
  21. import java.util.LinkedList;
  22. import java.util.List;
  23. import java.util.Map;
  24. /** * http请求客户端 */
  25. public class HttpClientUtils {
  26. private String url;
  27. private Map<String, String> param;
  28. private int statusCode;
  29. private String content;
  30. private String xmlParam;
  31. private boolean isHttps;
  32. public boolean isHttps() {
  33. return isHttps;
  34. }
  35. public void setHttps(boolean isHttps) {
  36. this.isHttps = isHttps;
  37. }
  38. public String getXmlParam() {
  39. return xmlParam;
  40. }
  41. public void setXmlParam(String xmlParam) {
  42. this.xmlParam = xmlParam;
  43. }
  44. public HttpClientUtils(String url, Map<String, String> param) {
  45. this.url = url;
  46. this.param = param;
  47. }
  48. public HttpClientUtils(String url) {
  49. this.url = url;
  50. }
  51. public void setParameter(Map<String, String> map) {
  52. param = map;
  53. }
  54. public void addParameter(String key, String value) {
  55. if (param == null)
  56. param = new HashMap<String, String>();
  57. param.put(key, value);
  58. }
  59. public void post() throws ClientProtocolException, IOException {
  60. HttpPost http = new HttpPost(url);
  61. setEntity(http);
  62. execute(http);
  63. }
  64. public void put() throws ClientProtocolException, IOException {
  65. HttpPut http = new HttpPut(url);
  66. setEntity(http);
  67. execute(http);
  68. }
  69. public void get() throws ClientProtocolException, IOException {
  70. if (param != null) {
  71. StringBuilder url = new StringBuilder(this.url);
  72. boolean isFirst = true;
  73. for (String key : param.keySet()) {
  74. if (isFirst) {
  75. url.append("?");
  76. isFirst = false;
  77. }else {
  78. url.append("&");
  79. }
  80. url.append(key).append("=").append(param.get(key));
  81. }
  82. this.url = url.toString();
  83. }
  84. HttpGet http = new HttpGet(url);
  85. execute(http);
  86. }
  87. /** * set http post,put param */
  88. private void setEntity(HttpEntityEnclosingRequestBase http) {
  89. if (param != null) {
  90. List<NameValuePair> nvps = new LinkedList<NameValuePair>();
  91. for (String key : param.keySet())
  92. nvps.add(new BasicNameValuePair(key, param.get(key))); // 参数
  93. http.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8)); // 设置参数
  94. }
  95. if (xmlParam != null) {
  96. http.setEntity(new StringEntity(xmlParam, Consts.UTF_8));
  97. }
  98. }
  99. private void execute(HttpUriRequest http) throws ClientProtocolException,
  100. IOException {
  101. CloseableHttpClient httpClient = null;
  102. try {
  103. if (isHttps) {
  104. SSLContext sslContext = new SSLContextBuilder()
  105. .loadTrustMaterial(null, new TrustStrategy() {
  106. // 信任所有
  107. public boolean isTrusted(X509Certificate[] chain,
  108. String authType)
  109. throws CertificateException {
  110. return true;
  111. }
  112. }).build();
  113. SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
  114. sslContext);
  115. httpClient = HttpClients.custom().setSSLSocketFactory(sslsf)
  116. .build();
  117. } else {
  118. httpClient = HttpClients.createDefault();
  119. }
  120. CloseableHttpResponse response = httpClient.execute(http);
  121. try {
  122. if (response != null) {
  123. if (response.getStatusLine() != null)
  124. statusCode = response.getStatusLine().getStatusCode();
  125. HttpEntity entity = response.getEntity();
  126. // 响应内容
  127. content = EntityUtils.toString(entity, Consts.UTF_8);
  128. }
  129. } finally {
  130. response.close();
  131. }
  132. } catch (Exception e) {
  133. e.printStackTrace();
  134. } finally {
  135. httpClient.close();
  136. }
  137. }
  138. public int getStatusCode() {
  139. return statusCode;
  140. }
  141. public String getContent() throws ParseException, IOException {
  142. return content;
  143. }
  144. }

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读