概述
package com.test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import javax.net.ssl.X509TrustManager;
import com.alibaba.fastjson.JSONObject;
public class HttpsServer {
/** * 默认请求超时时间20s */
private static int DEFAUL_TIME_OUT = 20000;
/** * 默认保持时间60s */
private static int HTTP_KEEP_TIME = 60000;
/** 默认编码 */
private static String charSet = "GBK";
private static SSLContext sslcontext = null;
private static SSLSocketFactory socketFactory = null;
private static TrustManager[] tm = {getServerTrustManager()};
private static HostnameVerifier hv = new HostnameVerifier() {
@Override
public boolean verify(String urlHostName, SSLSession session) {
return true;
}
};
static{
try {
sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(null, tm, new SecureRandom());
socketFactory = sslcontext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
System.out.println(e);
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
}
@SuppressWarnings("rawtypes")
public static String doPost(String URL,Map<String,String> parameters) throws UnsupportedEncodingException{
String res="";
DataOutputStream out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
JSONObject jsonObject = new JSONObject();
HttpURLConnection conn = null;
InputStreamReader is = null;
InputStream iss = null;
StringBuffer params = new StringBuffer();
for (Iterator iter = parameters.entrySet().iterator(); iter
.hasNext();) {
Entry element = (Entry) iter.next();
params.append(element.getKey().toString());
params.append("=");
params.append(URLEncoder.encode(element.getValue().toString(),
charSet));
params.append("&");
}
if (params.length() > 0) {
params = params.deleteCharAt(params.length() - 1);
}
System.out.println("params:"+params);
try {
long start_tm = System.currentTimeMillis();
URL url = new URL(URL);
long end_tm = System.currentTimeMillis();
conn = (HttpURLConnection) url.openConnection();
if ("https".equalsIgnoreCase(url.getProtocol())){
((HttpsURLConnection)conn).setHostnameVerifier(hv);
((HttpsURLConnection)conn).setSSLSocketFactory(socketFactory);
end_tm = System.currentTimeMillis();
}
conn.setRequestMethod("POST");
// 发送POST请求必须设置为true
conn.setDoOutput(true);
conn.setDoInput(true);
// 设置连接超时时间和读取超时时间
conn.setConnectTimeout(DEFAUL_TIME_OUT);
conn.setReadTimeout(HTTP_KEEP_TIME);
end_tm = System.currentTimeMillis();
// 获取输出流
//out = new OutputStreamWriter(conn.getOutputStream());
out = new DataOutputStream(conn.getOutputStream());
long start_tm2 = System.currentTimeMillis();
byte[] b = params.toString().getBytes();
out.write(b);
out.flush();
out.close();
end_tm = System.currentTimeMillis();
System.out.println("传输数据时间:"+ (end_tm - start_tm2));
// 取得输入流,并使用Reader读取
start_tm2 = System.currentTimeMillis();
jsonObject.put("status", conn.getResponseCode());
end_tm = System.currentTimeMillis();
System.out.println("总耗时:"+ (end_tm - start_tm));
if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) {
iss = conn.getInputStream();
is = new InputStreamReader(iss,charSet);
in = new BufferedReader(is);
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
} else {
System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
throw new RuntimeException("ResponseCode is an error code:" + conn.getResponseCode());
}
System.out.println("result:"+ result.toString());
res=result.toString();
} catch (Exception e) {
System.out.println(e);
throw new RuntimeException(e);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
System.out.println(e);
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
System.out.println( e);
}
}
if (iss != null) {
try {
iss.close();
} catch (IOException e) {
System.out.println( e);
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
System.out.println(e);
}
}
if (conn != null){
conn.disconnect();
}
}
return res;
}
/**
* 信任所有证书
*
* @param
* @return
*/
private static X509TrustManager getServerTrustManager() {
X509TrustManager manager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
};
return manager;
}
}
最后
以上就是阳光月饼为你收集整理的java 融合 http 和 https 的post请求方法的全部内容,希望文章能够帮你解决java 融合 http 和 https 的post请求方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复