设为首页 加入收藏

TOP

使用HttpClient向HTTPS地址发送POST请求(一)
2014-11-23 23:39:57 来源: 作者: 【 】 浏览:36
Tags:使用 HttpClient HTTPS 地址 发送 POST 请求
jadyer[java]
package com.jadyer.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.Nameva luePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameva luePair;
import org.apache.http.util.EntityUtils;

/**
* @see =====================================================================================================
* @see 在开发HTTPS应用时,时常会遇到两种情况
* @see 1、要么测试服务器没有有效的SSL证书,客户端连接时就会抛异常
* @see javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
* @see 2、要么测试服务器有SSL证书,但可能由于各种不知名的原因,它还是会抛一个堆烂码七糟的异常
* @see =====================================================================================================
* @see 由于我们这里使用的是HttpComponents-Client-4.1.2创建的连接,所以,我们就要告诉它使用一个不同的TrustManager
* @see TrustManager是一个用于检查给定的证书是否有效的类
* @see SSL使用的模式是X.509....对于该模式,Java有一个特定的TrustManager,称为X509TrustManager
* @see 所以我们自己创建一个X509TrustManager实例
* @see 而在X509TrustManager实例中,若证书无效,那么TrustManager在它的checkXXX()方法中将抛出CertificateException
* @see 既然我们要接受所有的证书,那么X509TrustManager里面的方法体中不抛出异常就行了
* @see 然后创建一个SSLContext并使用X509TrustManager实例来初始化之
* @see 接着通过SSLContext创建SSLSocketFactory,最后将SSLSocketFactory注册给HttpClient就可以了
* @see =====================================================================================================
* @create Jul 30, 2012 1:11:52 PM
* @author 玄玉( http://blog.csdn/net/jadyer)
*/
public class HttpClientUtil {
public static void main(String[] args)throws Exception{
Map params = new HashMap();
params.put("TransName", "IQSR");
params.put("Plain", "transId=IQSR~|~originalorderId=2012~|~originalTransAmt= ~|~merURL= ");
params.put("Signature", "9b759887e6ca9d4c24509d22ee4d22494d0dd2dfbdbeaab3545c1acee62eec7");
sendSSLPostRequest(" https://www.cebbank.com/per/QueryMerchantEpay.do", params);
}

/**
* 向HTTPS地址发送POST请求
* @param reqURL 请求地址
* @param params 请求参数
* @return 响应内容
*/
@SuppressWarnings("finally")
public static String sendSSLPostRequest(String reqURL, Map params){
long responseLength = 0; //响应长度
String responseContent = null; //响应内容
HttpClient httpClient = new DefaultHttpClient
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言标准IO 下一篇C语言中的几个容易混淆的知识点总..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: