java 发送http和https请求的实例
HTTP请求:
如果需要Json格式的自己转下,度娘上N种姿势…
//处理http请求requestUrl为请求地址requestMethod请求方式,值为"GET"或"POST"
publicstaticStringhttpRequest(StringrequestUrl,StringrequestMethod,StringoutputStr){
StringBufferbuffer=null;
try{
URLurl=newURL(requestUrl);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
//往服务器端写内容也就是发起http请求需要带的参数
if(null!=outputStr){
OutputStreamos=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStreamis=conn.getInputStream();
InputStreamReaderisr=newInputStreamReader(is,"utf-8");
BufferedReaderbr=newBufferedReader(isr);
buffer=newStringBuffer();
Stringline=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exceptione){
e.printStackTrace();
}
returnbuffer.toString();
}
HTTPS请求:
1、https和http的区别我这里就不介绍了,在java中访问https链接的话需要有相应的SSL证书,如果没有就无法访问(使用http访问https会返回403),所以我们要先自定义一个信任管理器。实现java自带的X509TrustManger接口,代码:
importjava.security.cert.CertificateException;
importjava.security.cert.X509Certificate;
importjavax.net.ssl.X509TrustManager;
publicclassMyX509TrustManagerimplementsX509TrustManager{
@Override
publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)
throwsCertificateException{
//TODOAuto-generatedmethodstub
}
@Override
publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)
throwsCertificateException{
//TODOAuto-generatedmethodstub
}
@Override
publicX509Certificate[]getAcceptedIssuers(){
//TODOAuto-generatedmethodstub
returnnull;
}
}
2、然后我们就可以使用https请求了:
/*
*处理httpsGET/POST请求
*请求地址、请求方法、参数
**/
publicstaticStringhttpsRequest(StringrequestUrl,StringrequestMethod,StringoutputStr){
StringBufferbuffer=null;
try{
//创建SSLContext
SSLContextsslContext=SSLContext.getInstance("SSL");
TrustManager[]tm={newMyX509TrustManager()};
//初始化
sslContext.init(null,tm,newjava.security.SecureRandom());;
//获取SSLSocketFactory对象
SSLSocketFactoryssf=sslContext.getSocketFactory();
URLurl=newURL(requestUrl);
HttpsURLConnectionconn=(HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
//设置当前实例使用的SSLSoctetFactory
conn.setSSLSocketFactory(ssf);
conn.connect();
//往服务器端写内容
if(null!=outputStr){
OutputStreamos=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//读取服务器端返回的内容
InputStreamis=conn.getInputStream();
InputStreamReaderisr=newInputStreamReader(is,"utf-8");
BufferedReaderbr=newBufferedReader(isr);
buffer=newStringBuffer();
Stringline=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exceptione){
e.printStackTrace();
}
returnbuffer.toString();
}
以上这篇java发送http和https请求的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。