,,JAVA利用HttpClient进行POST请求(HTTPS)实例

,,JAVA利用HttpClient进行POST请求(HTTPS)实例

下面小编就为大家带来一篇Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)利用HttpClient进行邮政请求(HTTPS)实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起小编过来看看吧

最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的统一资源定位器是HTTPS的,为了避免需要证书,所以用一个类继承默认HttpClient类,忽略校验过程。

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

包com。PC商城。服务。销售。苗更。impl

导入Java。安全。证明合格的证书异常;

导入Java。安全。证明合格的x509证书;

导入javax。网。SSL。SSL上下文;

导入javax。网。SSL。信托经理;

导入javax。网。SSL。x 509信托管理人;

导入org。阿帕奇。http。conn . clientconnectionmanager

导入org。阿帕奇。http。连接方案。方案;

导入org。阿帕奇。http。连接方案。方案登记处;

导入org。阿帕奇。http。连接SSL。sslsocketfactory

导入组织。阿帕奇。http。impl。客户。默认http客户端;

//用于进行Https请求的HttpClient

公共类SSLClient扩展了DefaultHttpClient{

公共SSLClient()引发异常{

super();

CTX=SSL上下文。getinstance(' TLS ');

x509信任管理器TM=新的x509信任管理器(){

@覆盖

public void checkClientTrusted(x509证书[]链,

字符串authType)引发证书异常{

}

@覆盖

public void checkserver trusted(x509证书[]链,

字符串authType)引发证书异常{

}

@覆盖

公共x509证书[]getAcceptedIssuers(){

返回空

}

};

ctx.init(null,new TrustManager[]{tm},null);

SSLSocketFactory SSF=新SSLSocketFactory(CTX,SSLSocketFactory .允许_全部_主机名_验证者);

ClientConnectionManager CCM=this。getconnectionmanager();

方案注册处Sr=CCM。getschemeregistry();

高级注册(新方案(' https ',443,SSF));

}

}

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

包com。PC商城。服务。销售。苗更。impl

导入Java。util。ArrayList

导入Java。util。迭代器;

导入Java。util。列表;

导入Java。util。地图;

导入Java。util。地图。词条;

导入org。阿帕奇。http。http实体;

导入org。阿帕奇。http。httpresponse

导入组织。阿帕奇。http。名称值对;

导入org。阿帕奇。http。客户。http客户端;

导入org。阿帕奇。http。客户。实体。urlencodedformentity

导入org。阿帕奇。http。客户。方法。http帖子;

导入组织。阿帕奇。http。消息。基本名称值对;

导入org。阿帕奇。http。util。实体效用;

/*

* 利用HttpClient进行邮政请求的工具类

*/

公共类HttpClientUtil {

公共字符串doPost(字符串url,映射字符串,字符串映射,字符串字符集){

HttpClient httpClient=null

HttpPost httpPost=null

字符串结果=空

尝试{

http client=new SSL client();

http post=新http post(URL);

//设置参数

ListNameValuePair list=new ArrayListNameValuePair();

迭代器iterator=map.entrySet().迭代器();

while(iterator.hasNext()){

EntryString,String elem=(EntryString,String)迭代器。next();

列表。添加(新的基本名称值对(elem。getkey()、elem。getvalue()));

}

if(list.size() 0){

UrlEncodedFormEntity entity=new UrlEncodedFormEntity(list,charset);

httpPost.setEntity(实体);

}

HttpResponse响应=http客户端。执行(http post);

如果(回应!=null){

HttpEntity resEntity=response。获取实体();

如果(冤仇!=null){

结果=实体效用。tostring(resEntity,charset);

}

}

}catch(Exception ex){

前任。printstacktrace();

}

返回结果;

}

}

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

包com。PC商城。服务。销售。苗更。impl

导入Java。util。hashmap

导入java.util.Map:

//对接口进行测试

公共类测试[

私有字符串URL=' 339 XXX。XXX。XXX/';

私有字符串charset=' utf-8 ';

私有http客户端util http客户端util=null:

公共测试()方法。]

http client util=new http client util();

}

公共无效测试()

httporgcreatetest字符串=URL“XXX/XXX/delivery”;

MapString,string create map=new hashmap string,string();

createMap.put('delivery_code ',' 1d 1 qz 222 z22 sm 21a ');

createMap.put('时间戳',' 1479198840000 ');

createMap.put('sign ',' f 2109 c 333 F3 EAD 929 f 932 e 89703 fa 0 f 683d 43 EB ');

httporgcreatetestrtn字符串=http客户端实用程序。dopost(httporgy createtest、createMap、charset);

系统。出去。println(' result:' httprocreatestrtn ');

}

public static void main(string[]args)>

testmain main=新testmain

main.test()。

}

}

刚开始不是很明白基本名称值对对的用法,后来慢慢摸索了一下,发现基本名称值对对是存储键值对的类,当添加新的关键点和价值(值)值,它会自动给装换成http(http)的格式,=表示和符号,比如339 XXX。XXX。XXX/XXX/xxxx/交付?delivery _ code=dz zsm 2 atimes tamp=1479198840000 sign=f209 c33 FEA 99 f93和8970FA0F68D3EB,我们都不用自己进行拼接和匹配了,个人觉得它用起来还是挺方便而且准确度也高,希望可以帮助到大家!

以上就是小编为大家带来的Java(Java)利用http客户端(http客户端)进行员额配置表请求(HTTPS)实例全部内容了,希望大家多多支持我们~

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: