110,499
社区成员
发帖
与我相关
我的任务
分享
public static int connectionTimeOut = 20000;
public static int readTimeOut = 60000;
public static String post(String url,NameValuePair[] data) throws Exception{
return post(url, data, null) ;
}
public static String post(String url,NameValuePair[] data,Header[] headers) throws Exception{
if(StringUtils.isEmpty(url)){
throw new Exception("The url is empty!") ;
}
HttpClient httpClient = getHttpClient(true) ;
HttpPost httpPost = new HttpPost(new URI(url.trim())) ;
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>() ;
for(NameValuePair d : data){
nameValuePairs.add(d) ;
}
try{
if(null != headers && 0 != headers.length){
httpPost.setHeaders(headers) ;
}
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8)) ;
HttpResponse httpResponse = httpClient.execute(httpPost) ;
int respCode = httpResponse.getStatusLine().getStatusCode() ;
String respData = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);
if(respCode != HttpStatus.SC_OK){
throw new Exception("Bad response status, " + respCode + "," + respData) ;
}
return respData ;
}finally{
httpClient.getConnectionManager().shutdown();
}
}
private static HttpClient getHttpClient(boolean useSSL){
HttpClient httpClient = useSSL ? getHttpsClient() : new DefaultHttpClient() ;
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connectionTimeOut);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, readTimeOut);
return httpClient;
}
private static HttpClient getHttpsClient(){
HttpClient httpClient = new DefaultHttpClient() ;
SSLContext sslContext = null ;
try {
sslContext = SSLContext.getInstance("SSL") ;
sslContext.init(null, new TrustManager[]{trustManager}, null) ;
SSLSocketFactory sslSocketFactory = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager clientConnectionManager = httpClient.getConnectionManager();
SchemeRegistry schemeRegistry = clientConnectionManager.getSchemeRegistry();
schemeRegistry.register(new Scheme("https", 443, sslSocketFactory));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return httpClient ;
}
private static X509TrustManager trustManager = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ReadHTTPForPostUrl(queryUrl, data, "application/x-www-form-urlencoded",null);
private string ReadHTTPForPostUrl(string queryUrl, string data, string contentType, string[] hreaders)
{
if (!string.IsNullOrEmpty(queryUrl) && queryUrl.StartsWith("http//") ) queryUrl = queryUrl.Replace("http//","http://");
HttpWebRequest request = WebRequest.Create(queryUrl) as HttpWebRequest;
if (hreaders != null && hreaders.Length > 0)
{
request.Headers.Clear();
foreach (string h in hreaders)
{
string[] name_value = h.Split(":".ToCharArray());
if (name_value != null && name_value.Length == 2)
{
try
{
if ("accept".Equals(name_value[0].ToLower()))
{
request.Accept = name_value[1].Trim();
}
else if ("content-type".Equals(name_value[0].ToLower()))
{
request.ContentType = name_value[1].Trim();
}
else
{
request.Headers.Add(name_value[0], name_value[1].Trim());
}
}
catch (Exception ex)
{
Log.Info("name=" + name_value[0] + ";value=" + name_value[1].Trim());
Log.Error(ex.Message, ex);
}
}
}
}
if (data != null && data.Length > 0)
{
byte[] post_bytes = System.Text.Encoding.UTF8.GetBytes(data);
request.Method = "POST";
request.ContentType = contentType;
request.ContentLength = post_bytes.Length;
System.IO.Stream outStream = request.GetRequestStream();
outStream.Write(post_bytes, 0, post_bytes.Length);
outStream.Close();
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader sr = new StreamReader(response.GetResponseStream());
string _content = sr.ReadToEnd();
try
{
sr.Close();
if (request != null)
{
request.Abort();
request=null;
}
if (response != null)
{
response.Close();
response=null;
}
}
catch { }
return _content;
}
try {
TreeMap<String,String> treeMap = new TreeMap<String,String>() ;
treeMap.put("app_key", sp_app_key);
treeMap.put("phone", phone);
treeMap.put("billing_no", billing_no);
treeMap.put("timestamp", timestamp);
String sign = open189.sign.ParamsSign.value(treeMap,sp_app_secret);
//注意这个地方
sign=URLEncoder.encode(sign,"UTF-8");
NameValuePair[] params = {
new BasicNameValuePair("app_key",treeMap.get("app_key")),
new BasicNameValuePair("phone",treeMap.get("phone")),
new BasicNameValuePair("billing_no",treeMap.get("billing_no")),
new BasicNameValuePair("state",state),
new BasicNameValuePair("reback_url",reback_url),
new BasicNameValuePair("sign",sign),
new BasicNameValuePair("timestamp",treeMap.get("timestamp"))};
String resp = HttpClientCommon.post(url, params) ;
C#是拼接成 a=xx&b=yy这种格式的