使用java发送https的请求

package api.basic;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.security.cert.CertificateException;

import java.util.Map;

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import java.security.cert.X509Certificate;

public class HttpsGetData {

private static class TrustAnyTrustManager implements X509TrustManager {

public void checkClientTrusted(X509Certificate[] chain, String authType)

throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType)

throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {

return new X509Certificate[] {};

}

}

private static class TrustAnyHostnameVerifier implements HostnameVerifier {

public boolean verify(String hostname, SSLSession session) {

return true;

}

}

String _url="";

Map<String,String> _params;

public HttpsGetData(String url,Map<String,String> keyValueParams)

{

this._url=url;

this._params=keyValueParams;

}

public String Do() throws Exception

{

String result = "";

BufferedReader in = null;

try {

String urlStr = this._url + "&" + getParamStr();

System.out.println("GET请求的URL为:"+urlStr);

SSLContext sc = SSLContext.getInstance("SSL");

sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },

new java.security.SecureRandom());

URL realUrl = new URL(urlStr);

// 打开和URL之间的连接

HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection();

//设置https相关属性

connection.setSSLSocketFactory(sc.getSocketFactory());

connection.setHostnameVerifier(new TrustAnyHostnameVerifier());

connection.setDoOutput(true);

// 设置通用的请求属性

connection.setRequestProperty("accept", "*/*");

connection.setRequestProperty("connection", "Keep-Alive");

connection.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// 建立实际的连接

connection.connect();

// 定义 BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

System.out.println("获取的结果为:"+result);

} catch (Exception e) {

System.out.println("发送GET请求出现异常!" + e);

//e.printStackTrace();

throw e;

}

// 使用finally块来关闭输入流

finally {

try {

if (in != null) {

in.close();

}

} catch (Exception e2) {

//e2.printStackTrace();

throw e2;

}

}

return result;

}

private String getParamStr()

{

String paramStr="";

// 获取所有响应头字段

Map<String, String> params = this._params;

// 获取参数列表组成参数字符串

for (String key : params.keySet()) {

paramStr+=key+"="+params.get(key)+"&";

}

//去除最后一个"&"

paramStr=paramStr.substring(0, paramStr.length()-1);

return paramStr;

}

}

时间: 2024-07-31 16:06:26

使用java发送https的请求的相关文章

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

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

Java发送HTTPS请求

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

java 执行https的请求

普通的get和post请求只能执行http的请求,遇到的了https的就歇菜了,需要SSL安全证书处理. 该方法只能用jdk1.7和1.8进行处理,jdk1.6会报Could not generate DH keypair的错误. 1.引入相关依赖包 jar包下载:httpcore4.5.5.jar    fastjson-1.2.47.jar maven: <dependency> <groupId>org.apache.httpcomponents</groupId>

JAVA发送http post 请求、get请求

1.写一个HttpRequestUtils工具类,包括post请求和get请求 import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost

java 发送http json请求

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 public void getRemoteId(HttpServletRequest request,Model model){         String name = request.getParame

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

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

java 实现https请求

java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点.本文在简要介绍JSSE的基础上提出了两种解决该问题的方法. 引言 过去的十几年,网络上已经积累了大量的Web应用.如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web 页面.传统的方法是使用Socket接口,但现在很多开发平台或工具如

使用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

Java发送http get/post请求,调用接口/方法

由于项目中要用,所以找了一些资料,整理下来. GitHub地址: https://github.com/iamyong    转自:http://blog.csdn.net/capmiachael/article/details/51833531 例1:使用 HttpClient (commons-httpclient-3.0.jar 1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3