https请求比http更安全 是在http的基础上加了SSL数据加密协议。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
因为之前写的是版本比较久的https请求方式,下面介绍看到较新的方式:
import java.net.URI; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Map.Entry; import javax.net.ssl.SSLContext; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLContextBuilder; import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpClientUtil { public static final Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); public static String doPost(String url, String json) throws Exception { SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { @Override public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext); HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); HttpPost httppost = new HttpPost(url); MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create(); //params //mEntityBuilder.addTextBody("userName", "1234"); httppost.setEntity(mEntityBuilder.build()); //httppost.addHeader("Content-Type", "Application/JSON"); //其他方法添加参数... /*StringEntity entity = new StringEntity(json, Charsets.UTF_8);//解决中文乱码问题 entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httppost.setEntity(entity);*/ int timeOut = 1000*50; // set Timeout RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeOut) .setConnectTimeout(timeOut).setSocketTimeout(timeOut).build(); httppost.setConfig(requestConfig); // get responce HttpResponse responce = httpClient.execute(httppost); // get http status code int status = responce.getStatusLine().getStatusCode(); System.out.println("request code:" + status); String resultString = null; if (status == HttpStatus.SC_OK) { // get result data HttpEntity entity = responce.getEntity(); resultString = EntityUtils.toString(entity, Charsets.UTF_8); } return resultString; } }
主要看的是这个:
http://www.jsjtt.com/java/JavaWebkaifa/117.html
另外的还有对其原理介绍深入的:
http://www.aneasystone.com/archives/2016/04/java-and-https.html
其他的:
http://blog.csdn.net/shenyunsese/article/details/41075579
相关推荐
java HttpClient 发送GET请求和带有表单参数的POST请求教程例子
一个HTTP客户端,可简化浏览器中的发送请求(Http和JSONP)。 产品特点 承诺式和回调式API。 发送Http和JSONP请求。 编译URL和查询字符串。 取消请求并设置超时。 标头,缓存控制和CORS。 可配置的http请求...
HttpClient 4.x HttpClient 4.x HttpCore 4.x 添加 Gradle 依赖项: dependencies { // wait..... } ##1。 JsonObjectRequestWithCookie 可以从 http 标头保存或发送 cookie。 代码就像 volley : String ...
为了更方便在服务端调用 HTTP 请求,微软在 .NET Framework 4.x 的时候引入了 HttpClient。但 HttpClient 有很多严重问题,一直饱受诟病,比如 InfoQ 的这篇文章 t.cn/Evzy80y,吐槽了 HttpClient 不能立即关闭连接...
既然有了RESTful API对象,就可以开始发送请求了。请求认证默认情况下,所有请求都包含以下标头: 'X-Authentication-Key'-创建ApiClient对象时提供的API密钥。 'X-Authentication-Nonce'-防止请求重播的增量编号。 ...
2、其他组件:HP-Socket v4.2.1 完全兼容 HP-Socket v4.1.x 版本,可以直接替换升级 v4.1.3 更新: > 代码调整: 1、修正 ITcpServer 和 ITcpAgent 组件的 Onclose 事件在 SP_DIRECT 发送模式下的触发规则 2、...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
它允许发送发布/获取请求,使用代理,绑定到特定IP,存储cookie等。安装将CurlHttpClient添加到您的composer.json { "require": { "dinke/curl-http-client": "dev-master" }}用法$ curl = new \ Dinke \ ...