软件编程
位置:首页>> 软件编程>> java编程>> java 发送http和https请求的实例

java 发送http和https请求的实例

作者:一包大豫竹  发布时间:2023-11-29 12:46:52 

标签:java,发送,http,https,请求

HTTP请求:

如果需要Json格式的自己转下,度娘上N种姿势…


//处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或"POST"
 public static String httpRequest(String requestUrl,String requestMethod,String outputStr){
   StringBuffer buffer=null;
   try{
   URL url=new URL(requestUrl);
   HttpURLConnection conn=(HttpURLConnection)url.openConnection();
   conn.setDoOutput(true);
   conn.setDoInput(true);
   conn.setRequestMethod(requestMethod);
   conn.connect();
   //往服务器端写内容 也就是发起http请求需要带的参数
   if(null!=outputStr){
     OutputStream os=conn.getOutputStream();
     os.write(outputStr.getBytes("utf-8"));
     os.close();
   }
   //读取服务器端返回的内容
   InputStream is=conn.getInputStream();
   InputStreamReader isr=new InputStreamReader(is,"utf-8");
   BufferedReader br=new BufferedReader(isr);
   buffer=new StringBuffer();
   String line=null;
   while((line=br.readLine())!=null){
     buffer.append(line);
   }
   }catch(Exception e){
     e.printStackTrace();
   }
   return buffer.toString();
 }

HTTPS请求:

1、https和http的区别我这里就不介绍了,在java 中访问https链接的话需要有相应的SSL证书,如果没有就无法访问(使用http访问https会返回403),所以我们要先自定义一个信任管理器。实现java自带的X509TrustManger接口,代码:


import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class MyX509TrustManager implements X509TrustManager {
 @Override
 public void checkClientTrusted(X509Certificate[] chain, String authType)
     throws CertificateException {
   // TODO Auto-generated method stub
 }
 @Override
 public void checkServerTrusted(X509Certificate[] chain, String authType)
     throws CertificateException {
   // TODO Auto-generated method stub
 }
 @Override
 public X509Certificate[] getAcceptedIssuers() {
   // TODO Auto-generated method stub
   return null;
 }
}

2、然后我们就可以使用https请求了:


/*
* 处理https GET/POST请求
* 请求地址、请求方法、参数
* */
public static String httpsRequest(String requestUrl,String requestMethod,String outputStr){
 StringBuffer buffer=null;
 try{
 //创建SSLContext
 SSLContext sslContext=SSLContext.getInstance("SSL");
 TrustManager[] tm={new MyX509TrustManager()};
 //初始化
 sslContext.init(null, tm, new java.security.SecureRandom());;
 //获取SSLSocketFactory对象
 SSLSocketFactory ssf=sslContext.getSocketFactory();
 URL url=new URL(requestUrl);
 HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
 conn.setDoOutput(true);
 conn.setDoInput(true);
 conn.setUseCaches(false);
 conn.setRequestMethod(requestMethod);
 //设置当前实例使用的SSLSoctetFactory
 conn.setSSLSocketFactory(ssf);
 conn.connect();
 //往服务器端写内容
 if(null!=outputStr){
   OutputStream os=conn.getOutputStream();
   os.write(outputStr.getBytes("utf-8"));
   os.close();
 }
 //读取服务器端返回的内容
 InputStream is=conn.getInputStream();
 InputStreamReader isr=new InputStreamReader(is,"utf-8");
 BufferedReader br=new BufferedReader(isr);
 buffer=new StringBuffer();
 String line=null;
 while((line=br.readLine())!=null){
   buffer.append(line);
 }
 }catch(Exception e){
   e.printStackTrace();
 }
 return buffer.toString();
}

来源:http://blog.csdn.net/qq_33583322/article/details/78600670

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com