关于connection reset的问题
我的是https协议的请求地址,但是使用的是http的请求方式,改为https方式之后就正常了!
https的构造方法
private HttpsUtil() {
try {
_hostNameVerifier = new NullHostNameVerifier();
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new NullX509TrustManager()}, new SecureRandom());
_sslSocketFactory = context.getSocketFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
https请求方法
public static String post(String url, String postData)
{
HttpsURLConnection conn = null;
DataOutputStream dos = null;
BufferedReader br = null;
String result = null;
try
{
byte[] data = postData.getBytes("UTF-8");
trustAllHosts();
//创建一个HttpsURLConnection连接
conn=(HttpsURLConnection) (new URL(url)).openConnection();
//设置连接超时时间
conn.setConnectTimeout(8000);
//post请求必须设置允许输出
conn.setDoOutput(true);
//post请求不能使用缓存
conn.setUseCaches(false);
//设置post方式请求
conn.setRequestMethod("POST");
conn.setInstanceFollowRedirects(true);
// 配置请求Content-Type
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
//开始连接,注意以上的所有设置必须要在connect之前完成
conn.connect();
// 发送请求参数,将OutputStream封装成DataOutputStream
dos = new DataOutputStream(conn.getOutputStream());
dos.write(data);
dos.flush();
//请求成功
int returnCode = conn.getResponseCode();
if(returnCode == 200)
{
br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
StringBuffer strBuf = new StringBuffer();
String line = null;
while(true)
{
line = br.readLine();
if (line == null) break;
strBuf.append(line);
}
result = strBuf.toString();
}
else {
System.out.println("HttpsUtil.post,Http return code: " + returnCode + ", postData: " + postData);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (br != null) {
try { br.close(); } catch(Exception e) {}
}
if (dos != null) {
try { dos.close(); } catch(Exception e) {}
}
if (conn != null) {
try {conn.disconnect(); } catch (Exception e) {}
}
}
return result;
}
}