最近做项目,由于安全性问题,由原来的http接口改为了https的接口,那么原来写的java调用http接口的工具类就不能够使用了,上网查找资料,折腾了半天,终于搞定了,详细代码如下:
package com.cnmts.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.commons.httpclient.HttpClient;
public class HttpsRequestUtil{
public static String httpRequest(String requestUrl) {
try{
ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();
Protocol.registerProtocol("https", new Protocol("https", fcty, 443));
HttpClient httpClient = new HttpClient();
//设置httpclient读取内容时使用的字符集
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");
//创建GET方法的实例
GetMethod getMethod = new GetMethod(requestUrl);
getMethod.addRequestHeader("Content-Type","text/html;charset=UTF-8");
//执行Get方法并取得返回状态码,200表示正常,其它代码为异常
int statusCode = httpClient.executeMethod(getMethod);
System.out.println("statusCode:"+statusCode);
InputStream is = getMethod.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
StringBuffer response = new StringBuffer();
String readLine;
while (((readLine = br.readLine()) != null)) {
response.append(readLine);
}
System.out.print(response);
return response.toString();
}
catch (Exception e){
e.printStackTrace();
return null;
}
}
}