1、完整版)JAVA利用HttpClient进行POST请求(HTTPS) JAVA利用HttpClient进行POST请求(HTTPS) 分类: java(31) jsp(1) 目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用jQuery post进行请求。 但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的post请求是不允许跨域的。 这时,就只能够用HttpClient包进行请求了,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程.
2、1。写一个SSLClient类,继承至HttpClient [java] view plain copy 1. import java.security.cert.CertificateException; 2. import java.security。cert。X509Certificate; 3. import 。ssl。SSLContext; 4. import javax。net.ssl.TrustManager; 5. import .ssl。X509TrustManager; 6. import org.apache。http.conn。C
3、lientConnectionManager; 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
4、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 voi
5、d checkClientTrusted(X509Certificate[] chain, 19. String authType) throws CertificateException { 20. } 21. @Override 22. public void checkServerTrusted(X509Certificate[] chain, 23. String a
6、uthType) throws CertificateException { 24. } 25. @Override 26. public X509Certificate[] getAcceptedIssuers() { 27. return null; 28. } 29. }; 30. ctx。init(null, new TrustManager[]{
7、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
8、", 443, ssf)); 35. } 36. } [java] view plain copy 1. import java。security.cert.CertificateException; 2. import java。security。cert。X509Certificate; 3. import 。ssl。SSLContext; 4. import 。ssl。TrustManager; 5. import javax。net.ssl。X509TrustManager; 6. import org.apache.ht
9、tp。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. publi
10、c 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. pu
11、blic void checkClientTrusted(X509Certificate[] chain, 19. String authType) throws CertificateException { 20. } 21. @Override 22. public void checkServerTrusted(X509Certificate[] chain, 23.
12、String authType) throws CertificateException { 24. } 25. @Override 26. public X509Certificate[] getAcceptedIssuers() { 27. return null; 28. } 29. }; 30. ctx。init(null, new TrustMa
13、nager[]{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 Schem
14、e(”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
15、 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.Basi
16、cNameValuePair; 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. Ht
17、tpPost 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.
18、 Iterator iterator = map.entrySet()。iterator();
28. while(iterator.hasNext()){
29. Entry
19、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(res
20、ponse != null){ 38. HttpEntity resEntity = response。getEntity(); 39. if(resEntity != null){ 40. result = EntityUtils.toString(resEntity,charset); 41. } 42. } 43. }catch(Exception ex){ 44.
21、 ex。printStackTrace(); 45. } 46. return result; 47. } 48. } [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 or
22、g。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.
23、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 24、 null;
20. HttpPost httpPost = null;
21. String result = null;
22. try{
23. httpClient = new SSLClient();
24. httpPost = new HttpPost(url);
25. //设置参数
26. List 25、ir〉();
27. Iterator iterator = map。entrySet()。iterator();
28. while(iterator.hasNext()){
29. Entry 26、
31. }
32. if(list.size() 〉 0){
33. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
34. httpPost.setEntity(entity);
35. }
36. HttpResponse response = httpClient.execute(httpPost);
27、
37. if(response != null){
38. HttpEntity resEntity = response。getEntity();
39. if(resEntity != null){
40. result = EntityUtils.toString(resEntity,charset);
41. }
42. }
43. }catch(Ex 28、ception 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 u 29、rl = "https://192.168。1。101/";
6. private String charset = "utf-8";
7. private HttpClientUtil httpClientUtil = null;
8.
9. public TestMain(){
10. httpClientUtil = new HttpClientUtil();
11. }
12.
13. public void test(){
14. Stri 30、ng httpOrgCreateTest = url + ”httpOrg/create”;
15. Map 31、orgname”,"****”);
20. String httpOrgCreateTestRtn = httpClientUtil。doPost(httpOrgCreateTest,createMap,charset);
21. System.out.println("result:”+httpOrgCreateTestRtn);
22. }
23.
24. public static void main(String[] args){
25. TestMain main = new 32、 TestMain();
26. main.test();
27. }
28. }
[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”;
33、7. private HttpClientUtil httpClientUtil = null;
8.
9. public TestMain(){
10. httpClientUtil = new HttpClientUtil();
11. }
12.
13. public void test(){
14. String httpOrgCreateTest = url + "httpOrg/create”;
15. Map〈String,Strin 34、g〉 createMap = new HashMap 35、doPost(httpOrgCreateTest,createMap,charset);
21. System。out.println("result:"+httpOrgCreateTestRtn);
22. }
23.
24. public static void main(String[] args){
25. TestMain main = new TestMain();
26. main.test();
27. }
28. }
httpClient4.2的jar包下载路径:http://
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818