java 发送http和https请求的实例

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

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

标签:java,发送,http,https,请求
0
投稿

猜你喜欢

  • Android编程下拉菜单spinner用法小结(附2则示例)

    2022-11-02 20:25:45
  • 简单实现Android弹出菜单效果

    2023-01-11 18:58:46
  • C# 生成随机数的代码

    2021-06-16 06:05:43
  • 解析spring加载bean流程的方法

    2023-11-29 13:50:32
  • Spring Boot如何通过CORS处理跨域问题

    2021-09-10 02:44:15
  • 深入理解Java中的final关键字_动力节点Java学院整理

    2022-05-05 23:18:24
  • IntelliJ IDEA 2020.2正式发布,两点多多总能助你提效

    2023-08-30 18:15:18
  • C#值类型、引用类型中的Equals和==的区别浅析

    2022-09-05 23:04:24
  • 详解HDFS多文件Join操作的实例

    2023-09-20 07:44:14
  • Spring框架基于注解开发CRUD详解

    2021-08-04 03:39:03
  • Java WebService 简单实例(附实例代码)

    2023-01-25 07:52:18
  • SpringBoot自动装配原理小结

    2023-11-18 16:54:06
  • WPF+SkiaSharp实现自绘拖曳小球

    2023-03-25 01:31:14
  • 一篇超详细的SpringBoot整合MybatisPlus的文章

    2023-02-26 11:04:35
  • Android编程之canvas绘制各种图形(点,直线,弧,圆,椭圆,文字,矩形,多边形,曲线,圆角矩形)

    2023-10-16 12:16:14
  • c#获取本机的IP地址的代码

    2021-08-21 08:37:07
  • SpringBoot后端进行数据校验JSR303的使用详解

    2022-02-19 01:15:31
  • C#获取日期的星期名称实例代码

    2022-10-22 13:25:53
  • Android开发SavedState Jetpack状态保存利器

    2023-02-12 19:49:49
  • Qt TCP实现简单通信功能

    2021-07-07 02:16:30
  • asp之家 软件编程 m.aspxhome.com