博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 发送http和https请求
阅读量:606 次
发布时间:2019-03-12

本文共 3406 字,大约阅读时间需要 11 分钟。

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://owexz.baihongyu.com/

你可能感兴趣的文章