https post

/**
* Post请求连接Https服务

* @param serverURL
*            请求地址
* @param jsonStr
*            请求报文
* @return
* @throws Exception

*/


public static synchronized String doHttpsPost(String serverURL,
String jsonStr) {
// 参数
HttpParams httpParameters = new BasicHttpParams();
// 设置连接超时
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
// 设置socket超时
HttpConnectionParams.setSoTimeout(httpParameters, 3000);
// 获取HttpClient对象 (认证)
HttpClient hc = initHttpClient(httpParameters);
HttpPost post = new HttpPost(serverURL);
// 发送数据类型
post.addHeader("Content-Type", "application/json;charset=utf-8");
// 接受数据类型
post.addHeader("Accept", "application/json");
// 请求报文


try {
StringEntity entity = new StringEntity(jsonStr, "UTF-8");
post.setEntity(entity);
post.setParams(httpParameters);
HttpResponse response = null;
response = hc.execute(post);
int sCode = response.getStatusLine().getStatusCode();
if (sCode == HttpStatus.SC_OK) {
return EntityUtils.toString(response.getEntity());
} else
return null;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return "1";


}


private static HttpClient client = null;


/**
* 初始化HttpClient对象

* @param params
* @return
*/
public static synchronized HttpClient initHttpClient(HttpParams params) {
if (client == null) {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore
.getDefaultType());
trustStore.load(null, null);


SSLSocketFactory sf = new SSLSocketFactoryImp(trustStore);
// 允许所有主机的验证
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);


HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
// 设置http和https支持
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));


ClientConnectionManager ccm = new ThreadSafeClientConnManager(
params, registry);


return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
e.printStackTrace();
return new DefaultHttpClient(params);
}
}
return client;
}


public static class SSLSocketFactoryImp extends SSLSocketFactory {
final SSLContext sslContext = SSLContext.getInstance("TLS");


public SSLSocketFactoryImp(KeyStore truststore)
throws NoSuchAlgorithmException, KeyManagementException,
KeyStoreException, UnrecoverableKeyException {
super(truststore);


TrustManager tm = new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}


@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] chain,
String authType)
throws java.security.cert.CertificateException {
}


@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] chain,
String authType)
throws java.security.cert.CertificateException {
}
};
sslContext.init(null, new TrustManager[] { tm }, null);
}


@Override
public Socket createSocket(Socket socket, String host, int port,
boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host,
port, autoClose);
}


@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HTTPS(超文本传输安全协议)是一种加密的传输协议,它在HTTP的基础上添加了安全性功能。HTTP是用于在网络上传输数据的协议,但是它的数据传输是明文的,容易被窃听和篡改。为了解决这个问题,HTTPS引入了TLS(传输层安全协议)来加密数据传输。 在进行HTTPS POST请求时,首先建立安全的SSL/TLS连接。这个过程称为握手。握手过程中,客户端发送一个加密协议版本列表给服务器,并提供自己支持的加密算法和安全参数。服务器从这个列表中选择一个加密算法和安全参数进行加密通信。一旦握手成功,客户端和服务器都能够确认通信是安全的。 随后,客户端通过HTTP POST请求传输数据。在HTTPS中,数据被加密后再传输。客户端首先将POST数据加密,并使用服务器提供的公钥对数据进行加密。服务器使用私钥对数据进行解密,并验证数据的完整性。如果数据被篡改或损坏,服务器将不接受这个请求。 HTTPS POST允许安全地传输敏感数据,如用户名、密码、信用卡信息等。因为传输的数据经过了加密,即使在传输过程中被拦截,也很难解密和窃取数据。HTTPS POST的安全性是很高的,被广泛应用于网上银行、电子商务以及其它需要保护用户隐私和数据安全的场景中。 总之,HTTPS POST是一种安全的数据传输形式,通过将数据加密和验证的方式,保护了用户隐私和数据的安全。通过使用HTTPS POST,我们能够在网络上进行安全的数据传输。 ### 回答2: 对于https post,它是通过https协议进行数据传输的一种方法。HTTP是一种传输协议,用于从Web服务器获取资源。而HTTPS是HTTP的一种安全版本,通过使用TLS/SSL协议来加密和保护数据传输。因此,https post是在https连接中使用post方法来传输数据。 使用https post的好处是数据的安全性得到保障。因为https使用TLS/SSL协议对数据进行加密,可以防止恶意用户窃取或篡改数据。而且,https post也能够对服务器进行身份验证,确保通信双方的身份合法和可信。 在进行https post时,客户端会向服务器发送一个post请求,其中包含要传输的数据。服务器接收到请求后,会解析并处理这些数据,然后向客户端返回相应的结果。 使用https post可以满足很多需求,比如用户登录、表单提交、数据上传等。在这些情况下,使用https post可以确保用户的隐私和数据安全。 总的来说,https post是一种安全的数据传输方式,通过使用https协议进行数据加密和保护,确保数据的安全性和完整性。这在今天的网络环境中非常重要,尤其是对于涉及用户隐私和敏感数据的应用程序。因此,https post被广泛应用于各种Web应用和服务中。 ### 回答3: https post是一种网络通信协议,用于在web应用程序之间传输数据的安全方式。它使用HTTP协议进行通信,并通过加密方法,如SSL或TLS,保护数据的安全性。HTTP是一种无状态的协议,而HTTPS通过在HTTP之上添加加密层,确保数据的机密性和完整性。 在进行HTTPS post请求时,首先需要建立安全连接。客户端通过发送请求给服务器,请求建立一个安全连接。服务器收到请求后,会返回一个证书,证书中包含了服务器的公钥。客户端通过验证证书的有效性,确认服务器身份的真实性。如果证书有效,客户端会生成一个随机的对称密钥,并使用服务器的公钥进行加密,然后发送给服务器。 服务器接收到加密的密钥后,使用自己的私钥进行解密,得到对称密钥。之后的通信将使用对称密钥进行加密和解密,确保传输数据的安全性。客户端可以将请求的数据使用对称密钥进行加密后发送给服务器,服务器收到请求后,使用对称密钥进行解密,获取请求的数据。 HTTPS post提供了一种安全可靠的通信方式,可以保护用户的隐私和数据的安全。它广泛应用于网上银行、电子商务、社交网络等需要传输敏感信息的场景。同时,使用HTTPS post也能够防止黑客窃取数据、劫持通信等网络安全问题,给用户带来更好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值