发送HTTPS请求

package com.suning.epp.trt.util.r32epp;

import java.io.BufferedInputStream;

import java.io.IOException;

import java.net.URLDecoder;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

import java.util.List;

import javax.net.ssl.SSLContext;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.ssl.SSLContextBuilder;

import org.apache.http.ssl.TrustStrategy;

import org.apache.http.util.EntityUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class HttpsClientUtil {

private static final String UTF_8 = "UTF-8";

private HttpsClientUtil() {

}

private static final Logger log = LoggerFactory

.getLogger(HttpsClientUtil.class);

public static String post(List<BasicNameValuePair> params, String url,

String logPrefix) {

CloseableHttpClient httpClient = createSSLClientDefault(logPrefix);

try {

HttpPost post = createPost(params, url, logPrefix);

HttpResponse response = httpClient.execute(post);

HttpEntity entity = response.getEntity();

String body = EntityUtils.toString(entity);

return body;

} catch (Exception e) {

throw new EppRuntimeException(e);

} finally {

try {

httpClient.close();

} catch (IOException e) {

log.error(logPrefix, e);

}

}

}

public static CloseableHttpClient createSSLClientDefault(String logPrefix) {

try {

SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(

null, new TrustStrategy() {

// 信任所有

public boolean isTrusted(X509Certificate[] chain,

String authType) throws CertificateException {

return true;

}

}).build();

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(

sslContext);

return HttpClients.custom().setSSLSocketFactory(sslsf).build();

} catch (Exception e) {

log.error(logPrefix, e);

}

return HttpClients.createDefault();

}

private static HttpPost createPost(List<BasicNameValuePair> params,

String url, String logPrefix) throws Exception {

HttpPost post = new HttpPost(url);

HttpEntity httpEntity = new UrlEncodedFormEntity(params, UTF_8);

post.setEntity(httpEntity);

printParams(url, logPrefix, httpEntity);

return post;

}

private static void printParams(String url, String logPrefix,

HttpEntity httpEntity) throws IOException {

BufferedInputStream bif = null;

try {

bif = new BufferedInputStream(httpEntity.getContent());

byte[] byteArr = new byte[(int) httpEntity.getContentLength()];

byte tmpByte[] = new byte[1024];

int totalCounts = 0;

int size = bif.read(tmpByte);

while (size > 0) {

System.arraycopy(tmpByte, 0, byteArr, totalCounts, size);

totalCounts = totalCounts + size;

size = bif.read(tmpByte);

}

log.info(logPrefix + "HTTP请求:{}?{}", url,

URLDecoder.decode(new String(byteArr, UTF_8), UTF_8));

} catch (Exception e) {

log.error(logPrefix, e);

} finally {

if (bif != null) {

bif.close();

}

}

}

}

时间: 2024-10-11 21:00:21

发送HTTPS请求的相关文章

Jmeter发送HTTPS请求

Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. (一)设置HTTP请求 我们首先右键添加线程组,然后继续右键添加控制器,由于登陆操作只请求一次,因而选择仅一次控制器.接下来右键添加sampler->HTTP请求,设置HTTP请求.这里注意的地方首先是端口号,如果只是普通的HTTP协议,默认不填,而这里是HTTPS协议,因而填端口号443.另外“

使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

这里使用的是HttpComponents-Client-4.1.2 1 package com.jadyer.util; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.security.KeyManagementException; 8 import java

HTTPClient 发送HTTPS请求

HTTPClient 发送HTTP请求就不多说了, 现在给出发送HTTPS请求, 主要思路是忽略证书验证. /** * * @param url * @param contextType "image/jpeg","application/Json" * @return */ public static byte[] sendHttpsGetUrl(HttpClient httpClient1 ,String url,String contextType) { //

【转载】JMeter学习(三十六)发送HTTPS请求

Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. (一)设置HTTP请求 我们首先右键添加线程组,然后继续右键添加控制器,由于登陆操作只请求一次,因而选择仅一次控制器.接下来右键添加sampler->HTTP请求,设置HTTP请求.这里注意的地方首先是端口号,如果只是普通的HTTP协议,默认不填,而这里是HTTPS协议,因而填端口号443.另外“

Nodejs后台发送https请求验证证书

项目中用到了很多第三方的库,这些库在生产环境使用的时候的都会发送https的请求出去,但是再发送请求的时候nodejs会验证证书,没有证书的时候都会无法通过,这里可以修改代码进行修改这个问题, 1.在发送https请求的时候添加如下代码: rejectUnauthorized: false, 如图,某个库: 2.还有就是全局设置. 启动程序的时候设置: process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)

关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection) [转] https协议对于开发者而言其实只是多了一步证书验证的过程.这个证书正常情况下被jdk/jre/security/cacerts所管理.里面证书包含两种情况: 1.机构所颁发的被认证的证书,这种证书的网站在浏览器访问时https头显示为绿色如百度 2.个人所设定的证书,这种证书的网站在浏览器里https头显示为红色×,且需要点击信任该网站才能继续访问.而点击信任这一步的操作就是我们

通过 Apache Commons HttpClient 发送 HTTPS 请求

1.通过 HTTPS 发送 POST 请求: 2.HTTPS 安全协议采用 TLSv1.2: 3. 使用代理(Proxy)进行 HTTPS 访问: 4.指定 Content-Type 为:application/x-www-form-urlencoded: 5.HTTPS  请求时加载客户端证书(Client Certificate): 6.忽略服务器端证书链(Server Certificate Chain)的校验(Validate). public static void main(Stri

Java发送HTTPS请求

前言 上篇文章介绍了 java 发送 http 请求,大家都知道发送http是不安全的 .我也是由于对接了其他企业后总结了一套发送 https的工具.大家网上找方法很多的,但是可不是你粘过来就能用啊,我也是踩过坑的,所以我这个工具,只要粘贴到你们自己项目里就可以用.我的工具跟网上没什么区别,唯一的区别是我亲身实战过,把需要注意的细节列出来,不让大家浪费时间.   正文 本文只介绍 发送 post 请求,既然选择了 https 就不会用get,因为get也是不安全的.   读前须知 我会把需要依赖

httpClient发送https 请求

做项目要用到httpClient发送https到服务器,要求URL中带参数,并且发送xml格式的报文,第一次做,在这里记录一下,以便以后查询的帮助别人:本文在证书配置正确的前提下执行 客户端代码;     public static void httpsRequest() throws Exception {      System.out.println("this is https");         KeyStore trustStore  = KeyStore.getInst