Java 使用 HttpClient 发送 Post请求(http与https)

小咪咪 2022-04-08 11:46 472阅读 0赞

发送 http 请求

  1. **发送 http 请求 **
  2. package com.zealotpz.demo;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.NameValuePair;
  5. import org.apache.http.client.config.RequestConfig;
  6. import org.apache.http.client.entity.UrlEncodedFormEntity;
  7. import org.apache.http.client.methods.CloseableHttpResponse;
  8. import org.apache.http.client.methods.HttpPost;
  9. import org.apache.http.impl.client.CloseableHttpClient;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.apache.http.message.BasicNameValuePair;
  12. import org.apache.http.protocol.HTTP;
  13. import org.apache.http.util.EntityUtils;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import java.util.Map;
  17. public class HttpClientTest {
  18. //设置链接超时和请求超时等参数,否则会长期停止或者崩溃
  19. private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).setConnectionRequestTimeout(60000).build();
  20. public static String sendPost(String url, Map<String, String> params) {
  21. String responseContent = null;
  22. try {
  23. //建立HttpPost对象
  24. HttpPost httpPost = new HttpPost(url);
  25. //建立一个NameValuePair数组,用于存储欲传送的参数
  26. List<NameValuePair> nvps = new ArrayList<NameValuePair>();
  27. //遍历参数 map,添加参数
  28. for (String key : params.keySet()) {
  29. nvps.add(new BasicNameValuePair(key, params.get(key)));
  30. }
  31. //参数集合传入到一个UrlEncodedFormEntity中并设置编码
  32. httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
  33. CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(requestConfig).build();
  34. //发送Post,并返回一个HttpResponse对象
  35. CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
  36. //使用响应对象获取响应实
  37. HttpEntity httpEntity = httpResponse.getEntity();
  38. if (httpEntity != null) {
  39. //将响应实体转为字符串
  40. responseContent = EntityUtils.toString(httpEntity, "UTF-8");
  41. }
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. //返回应答字符串
  46. return responseContent;
  47. }

发送 https 请求

  1. **发送 https 请求 **
  2. package com.zealotpz.demo;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.NameValuePair;
  5. import org.apache.http.client.config.RequestConfig;
  6. import org.apache.http.client.entity.UrlEncodedFormEntity;
  7. import org.apache.http.client.methods.CloseableHttpResponse;
  8. import org.apache.http.client.methods.HttpPost;
  9. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  10. import org.apache.http.conn.ssl.SSLContextBuilder;
  11. import org.apache.http.conn.ssl.TrustStrategy;
  12. import org.apache.http.conn.ssl.X509HostnameVerifier;
  13. import org.apache.http.impl.client.CloseableHttpClient;
  14. import org.apache.http.impl.client.HttpClients;
  15. import org.apache.http.message.BasicNameValuePair;
  16. import org.apache.http.protocol.HTTP;
  17. import org.apache.http.util.EntityUtils;
  18. import javax.net.ssl.SSLContext;
  19. import javax.net.ssl.SSLException;
  20. import javax.net.ssl.SSLSession;
  21. import javax.net.ssl.SSLSocket;
  22. import java.io.IOException;
  23. import java.security.GeneralSecurityException;
  24. import java.security.cert.CertificateException;
  25. import java.security.cert.X509Certificate;
  26. import java.util.ArrayList;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * Created by zealotpz on 2017/2/9.
  31. */
  32. public class HttpClientTest {
  33. //设置链接超时和请求超时等参数,否则会长期停止或者崩溃
  34. private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).setConnectionRequestTimeout(60000).build();
  35. public static String sendHttpsPost(String url, Map<String, String> params) {
  36. String responseContent = null;
  37. try {
  38. HttpPost httpPost = new HttpPost(url);
  39. List<NameValuePair> nvps = new ArrayList<NameValuePair>();
  40. for (String key : params.keySet()) {
  41. nvps.add(new BasicNameValuePair(key, params.get(key)));
  42. }
  43. httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
  44. httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");//修改请求头
  45. // httpPost.setEntity(new StringEntity(JacksonUtils.toJson(encrypt),"UTF-8"));//传递json数据对象encrypt为自己创建的Dto对象
  46. CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setDefaultRequestConfig(requestConfig).build();
  47. CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
  48. HttpEntity httpEntity = httpResponse.getEntity();
  49. if (httpEntity != null) {
  50. responseContent = EntityUtils.toString(httpEntity, HTTP.UTF_8);
  51. }
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. }
  55. return responseContent;
  56. }

创建SSL安全连接

  1. //创建SSL安全连接
  2. private static SSLConnectionSocketFactory createSSLConnSocketFactory() {
  3. SSLConnectionSocketFactory sslsf = null;
  4. try {
  5. SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
  6. public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
  7. return true;
  8. }
  9. }).build();
  10. sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {
  11. public boolean verify(String arg0, SSLSession arg1) {
  12. return true;
  13. }
  14. public void verify(String host, SSLSocket ssl) throws IOException {
  15. }
  16. public void verify(String host, X509Certificate cert) throws SSLException {
  17. }
  18. public void verify(String host, String[] cns, String[] subjectAlts) throws SSLException {
  19. }
  20. });
  21. } catch (GeneralSecurityException e) {
  22. e.printStackTrace();
  23. }
  24. return sslsf;
  25. }
  26. }
  27. public static void main(String[] args) {
  28. String url ="https://rsb.pingan.com.cn/brop/ma/cust/app/market/loan/applyNewLoanC.do";
  29. Encrypt encrypt = new Encrypt();
  30. encrypt.setEncryptFlag("YES");
  31. encrypt.setEncryptParam("HNuto1vtwEer3FaMNHRclszJUP3sT61%2BM62YN8b87S5ha3iiAb%2BboUKTjVaPrCREDrwVnWZERYe0SEFdhboM9DVRHnG3HJxZzByZGALNJxSs5nkAvigv6ErlqdH%2FBcpxHQINl4aXRGVm5AhtEXc5K%2Bu423ULxij%2FG%2BdBRQds5us%3D");
  32. encrypt.setHouseLoan("YES");
  33. encrypt.setInsurancePolicy("YES");
  34. encrypt.setOuterSource("xyd0001");
  35. encrypt.setProvidentFund("YES");
  36. encrypt.setSource("sa0001459");
  37. encrypt.setUserAge("23-55岁");
  38. encrypt.setUserCreditCard("YES");
  39. encrypt.setCity("广东-深圳");
  40. encrypt.setCityCode("440300");
  41. 方式一:
  42. /* String url ="http://10.3.110.138:8089/crm/user/login";
  43. paramsMap.put("username","wwl");
  44. paramsMap.put("password","123456");*/
  45. 方式二:
  46. String Result =HttpRequestUtils.sendHttpsPost(url,encrypt);
  47. System.out.println(Result);
  48. }

发表评论

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

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

相关阅读