java调用https接口
public static String sendPost(String url, String body, String ak_id, String ak_secret) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
trustAllHttpsCertificates();
URL realUrl = new URL(url);
/*
* http header 参数
*/
String method = "POST";
String accept = "json";
String content_type = "application/json";
String path = realUrl.getFile();
String date = toGMTString(new Date());
// 1.对body做MD5+BASE64加密
String bodyMd5 = MD5Base64(body);
String stringToSign = method + "\n" + accept + "\n" + bodyMd5 + "\n" + content_type + "\n" + date + "\n"+ path;
// 2.计算 HMAC-SHA1
String signature = HMACSha1(stringToSign, ak_secret);
// 3.得到 authorization header
String authHeader = "Dataplus " + ak_id + ":" + signature;
// 打开和URL之间的连接
HttpsURLConnection https = (HttpsURLConnection)realUrl.openConnection();
HostnameVerifier hv=new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName + " vs. "
+ session.getPeerHost());
return true;
}
};
https.setHostnameVerifier(hv);
HttpURLConnection conn= https;
// 设置通用的请求属性
conn.setRequestProperty("accept", accept);
conn.setRequestProperty("content-type", content_type);
conn.setRequestProperty("date", date);
conn.setRequestProperty("Authorization", authHeader);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(body);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
InputStream is;
int a=conn.getResponseCode();
if ( a== 200) {
is = conn.getInputStream();
} else {
is = conn.getErrorStream();
}
in = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}
这个方法传http接口可以正常访问并且读取返回结果,但是传https接口就报404?请问哪里出了问题啊
...全文
相关推荐
JAVA利用HttpClient进行HTTPS接口调用
JAVA利用HttpClient进行HTTPS接口调用
JAVA利用HttpClient进行HTTPS接口调用的方法
本篇文章主要介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,具有一定的参考价值,有兴趣的可以了解一下
Java中如何通过https调用Webservice接口_测试环境.rar
Java中如何通过https调用Webservice接口
Java 调用Restful API接口的几种方式(HTTPS)
主要介绍了Java 调用Restful API接口的几种方式(HTTPS),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java调用https接口的两种方式及完整代码.zip
HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。java调用https接口有两种方式:1.禁用证书,之间调用接口;2.安装证书,然后通过SSL协议调用接口。本文件是java调用https接口的两种方式及完整代码。


