目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求。

但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的post请求是不允许跨域的。

这时,就只能够用HttpClient包进行请求了,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。

1.写一个SSLClient类,继承至HttpClient

[java] view plain copy
  1. import java.security.cert.CertificateException;
  2. import java.security.cert.X509Certificate;
  3. import javax.net.ssl.SSLContext;
  4. import javax.net.ssl.TrustManager;
  5. import javax.net.ssl.X509TrustManager;
  6. import org.apache.http.conn.ClientConnectionManager;
  7. import org.apache.http.conn.scheme.Scheme;
  8. import org.apache.http.conn.scheme.SchemeRegistry;
  9. import org.apache.http.conn.ssl.SSLSocketFactory;
  10. import org.apache.http.impl.client.DefaultHttpClient;
  11. //用于进行Https请求的HttpClient
  12. public class SSLClient extends DefaultHttpClient{
  13. public SSLClient() throws Exception{
  14. super();
  15. SSLContext ctx = SSLContext.getInstance("TLS");
  16. X509TrustManager tm = new X509TrustManager() {
  17. @Override
  18. public void checkClientTrusted(X509Certificate[] chain,
  19. String authType) throws CertificateException {
  20. }
  21. @Override
  22. public void checkServerTrusted(X509Certificate[] chain,
  23. String authType) throws CertificateException {
  24. }
  25. @Override
  26. public X509Certificate[] getAcceptedIssuers() {
  27. return null;
  28. }
  29. };
  30. ctx.init(null, new TrustManager[]{tm}, null);
  31. SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  32. ClientConnectionManager ccm = this.getConnectionManager();
  33. SchemeRegistry sr = ccm.getSchemeRegistry();
  34. sr.register(new Scheme("https", 443, ssf));
  35. }
  36. }

2.写一个利用HttpClient发送post请求的类

[java] view plain copy
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import org.apache.http.HttpEntity;
  7. import org.apache.http.HttpResponse;
  8. import org.apache.http.NameValuePair;
  9. import org.apache.http.client.HttpClient;
  10. import org.apache.http.client.entity.UrlEncodedFormEntity;
  11. import org.apache.http.client.methods.HttpPost;
  12. import org.apache.http.message.BasicNameValuePair;
  13. import org.apache.http.util.EntityUtils;
  14. /*
  15. * 利用HttpClient进行post请求的工具类
  16. */
  17. public class HttpClientUtil {
  18. public String doPost(String url,Map<String,String> map,String charset){
  19. HttpClient httpClient = null;
  20. HttpPost httpPost = null;
  21. String result = null;
  22. try{
  23. httpClient = new SSLClient();
  24. httpPost = new HttpPost(url);
  25. //设置参数
  26. List<NameValuePair> list = new ArrayList<NameValuePair>();
  27. Iterator iterator = map.entrySet().iterator();
  28. while(iterator.hasNext()){
  29. Entry<String,String> elem = (Entry<String, String>) iterator.next();
  30. list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
  31. }
  32. if(list.size() > 0){
  33. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
  34. httpPost.setEntity(entity);
  35. }
  36. HttpResponse response = httpClient.execute(httpPost);
  37. if(response != null){
  38. HttpEntity resEntity = response.getEntity();
  39. if(resEntity != null){
  40. result = EntityUtils.toString(resEntity,charset);
  41. }
  42. }
  43. }catch(Exception ex){
  44. ex.printStackTrace();
  45. }
  46. return result;
  47. }
  48. }

3.调用post请求的测试代码

[java] view plain copy
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. //对接口进行测试
  4. public class TestMain {
  5. private String url = "https://192.168.1.101/";
  6. private String charset = "utf-8";
  7. private HttpClientUtil httpClientUtil = null;
  8. public TestMain(){
  9. httpClientUtil = new HttpClientUtil();
  10. }
  11. public void test(){
  12. String httpOrgCreateTest = url + "httpOrg/create";
  13. Map<String,String> createMap = new HashMap<String,String>();
  14. createMap.put("authuser","*****");
  15. createMap.put("authpass","*****");
  16. createMap.put("orgkey","****");
  17. createMap.put("orgname","****");
  18. String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
  19. System.out.println("result:"+httpOrgCreateTestRtn);
  20. }
  21. public static void main(String[] args){
  22. TestMain main = new TestMain();
  23. main.test();
  24. }
  25. }

httpClient4.2的jar包下载路径:http://download.csdn.net/detail/hqmryang/4582440#comment

JAVA利用HttpClient进行POST请求(HTTPS)相关推荐

  1. Java利用HttpClient发送请求生成微信支付二维码、查询支付状态

    一.HttpClient工具类 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache. ...

  2. java 利用httpclient绕过百度验证登录爬取百度指数

    公司要求爬取百度指数的相关信息,发现需要百度登录验证.网上找了很多相关文章,都是用来模拟登录的过程,经过一番尝试,发现太复杂,最后失败.于是,换种方式,直接绕过登录.具体方式如下: 分析请求内容 我用 ...

  3. java使用httpclient发送POST请求【java基础】

    1.创建请求对象:post或者get HttpPost httpPost = new HttpPost(url); 2. 创建httpclient对象 CloseableHttpClient http ...

  4. java https post get请求_JAVA利用HttpClient进行POST和GET请求(HTTPS)

    目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求. 但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的p ...

  5. java http 上传文件_java利用httpClient实现后台文件上传请求

    之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过h ...

  6. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...

    HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...

  7. Java使用HttpClient发送Https请求证书失效:PKIX path building failed:

    最近使用HttpClient对接第三方短信接口,在进行本地测试时报了一个证书失效的错误. 1. 封装的HttpClient的Post请求 public static Map<String, Ob ...

  8. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  9. 【commons-httpclient】Java中HttpClient工具访问Web请求

    注意jar包是: HttpClient工具使用 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程 ...

最新文章

  1. 分页池内存持续增长_Java技术学习之对虚拟机(JVM)内存模型的分析
  2. python 编码声明位置,python中的编码声明
  3. C语言 空指针 NULL - C语言零基础入门教程
  4. 函数的返回值可以不用赋值_C语言学习|函数的应用《一》
  5. C++获取文本文件字节数的一个小方法
  6. 揭秘React同构应用
  7. python怎么创建文本文件
  8. 基于Windows Server 2008 R2的Failover Cluster(故障转移群集)部署Sql Server 2008 AA(主主) 模式群集(第一部分)
  9. 射频电路学习之滤波电路
  10. 【ASP.NET】——asp.net入门
  11. 电饭锅鸿蒙系统,有了美的轻食电饭煲,人们更加确定了做饭工具的重要性
  12. 微信V3支付 订单查询 退款查询
  13. iPhone电池健康度是什么
  14. Qt OpenGL(08)通过递归细分正二十面体逼近球面
  15. 思维导图 - 学习/实践
  16. twitter下载网络教程_糟糕的主意:喜p Twitter广告网络
  17. 总说业务,到底业务常用的指标有哪些
  18. 让制度去管理,而不是你去管理
  19. 李峋同款爱心代码 (超好看) | 电视剧《点燃我温暖你》
  20. 智云通CRM:客户说“我随便看看”,如何回应才能促进成交?

热门文章

  1. 短视频成内容创业风口,想要跟Papi酱飞上天却不容易
  2. 元宇宙关键技术简介(马井堂)
  3. word拼写检查自定义词典下载_使用自定义词典进行拼写检查
  4. render函数介绍,以及 render: h =gt; h(App)
  5. WinCDEmu-好用的iso制作和模拟软件
  6. 红外通讯之红外遥控器让你的舵机转圈圈
  7. canvas 绘制刮刮卡
  8. git常用命令的解释
  9. Linux 环境 Apache Web 服务器配置详解
  10. 震惊!马云再现神预言:疫情之后,最赚钱的不是股市,不是房地产,而是这个!...