Java获取http和https协议返回的json数据

发布时间 - 2026-01-10 22:31:08    点击率:

现在很多公司都是将数据返回一个json,而且很多第三方接口都是返回json数据,而且还需要使用到http协议,http协议是属于为加密的协议,而https协议需要SSL证书,https是将用户返回的信息加密处理,然而我们要获取这些数据,就需要引入SSL证书。现在我提供两个方法,帮助各位如何获取http和https返回的数据。

获取http协议的数据的方法,如下:

public static JSONObject httpRequest(String requestUrl, String requestMethod) {
    JSONObject jsonObject = null;
    StringBuffer buffer = new StringBuffer();
    try {

      URL url = new URL(requestUrl);
      // http协议传输
      HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

      httpUrlConn.setDoOutput(true);
      httpUrlConn.setDoInput(true);
      httpUrlConn.setUseCaches(false);
      // 设置请求方式(GET/POST)
      httpUrlConn.setRequestMethod(requestMethod);

      if ("GET".equalsIgnoreCase(requestMethod))
        httpUrlConn.connect();
      // 将返回的输入流转换成字符串
      InputStream inputStream = httpUrlConn.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

      String str = null;
      while ((str = bufferedReader.readLine()) != null) {
        buffer.append(str);
      }
      bufferedReader.close();
      inputStreamReader.close();
      // 释放资源
      inputStream.close();
      inputStream = null;
      httpUrlConn.disconnect();
      jsonObject = JSONObject.fromObject(buffer.toString());
    } catch (Exception e) {
      e.printStackTrace();
    }
    return jsonObject;
  }

获取https协议的数据的方法,如下:

public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
    JSONObject jsonObject = null;
    StringBuffer buffer = new StringBuffer();
    try {
      // 创建SSLContext对象,并使用我们指定的信任管理器初始化
      TrustManager[] tm = { new MyX509TrustManager() };
      SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
      sslContext.init(null, tm, new java.security.SecureRandom());
      // 从上述SSLContext对象中得到SSLSocketFactory对象
      SSLSocketFactory ssf = sslContext.getSocketFactory();

      URL url = new URL(requestUrl);
      HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
      httpUrlConn.setSSLSocketFactory(ssf);

      httpUrlConn.setDoOutput(true);
      httpUrlConn.setDoInput(true);
      httpUrlConn.setUseCaches(false);
      // 设置请求方式(GET/POST)
      httpUrlConn.setRequestMethod(requestMethod);

      if ("GET".equalsIgnoreCase(requestMethod))
        httpUrlConn.connect();

      // 当有数据需要提交时
      if (null != outputStr) {
        OutputStream outputStream = httpUrlConn.getOutputStream();
        // 注意编码格式,防止中文乱码
        outputStream.write(outputStr.getBytes("UTF-8"));
        outputStream.close();
      }

      // 将返回的输入流转换成字符串
      InputStream inputStream = httpUrlConn.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

      String str = null;
      while ((str = bufferedReader.readLine()) != null) {
        buffer.append(str);
      }
      bufferedReader.close();
      inputStreamReader.close();
      // 释放资源
      inputStream.close();
      inputStream = null;
      httpUrlConn.disconnect();
      jsonObject = JSONObject.fromObject(buffer.toString());
    } catch (ConnectException ce) {
      log.error("Weixin server connection timed out.");
    } catch (Exception e) {
      log.error("https request error:{}", e);
    }
    return jsonObject;

  }

获取https协议的数据和获取http协议的区别在于

  // 创建SSLContext对象,并使用我们指定的信任管理器初始化
      TrustManager[] tm = { new MyX509TrustManager() };
      SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
      sslContext.init(null, tm, new java.security.SecureRandom());
      // 从上述SSLContext对象中得到SSLSocketFactory对象
      SSLSocketFactory ssf = sslContext.getSocketFactory();

      URL url = new URL(requestUrl);
      HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
      httpUrlConn.setSSLSocketFactory(ssf);

大家有更好的方法欢迎留言分享,以上就是本次共享的内容 。还有,提示一下,如果复制中,缺失jar包,请自行下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # https  # json数据  # java返回json数据  # Java实现调用对方http接口得到返回数据  # java实现http的Post、Get、代理访问请求  # Java如何实现http接口参数和返回值加密  # 都是  # 管理器  # 中得  # 第三方  # 还需  # 要使  # 大家多多  # 欢迎留言  # 请自行  # setDoOutput  # true  # false  # setUseCaches  # setDoInput  # url 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建支持数据库操作的智能建站平台?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何快速查询网址的建站时间与历史轨迹?  如何撰写建站申请书?关键要点有哪些?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  大同网页,大同瑞慈医院官网?  如何自定义建站之星模板颜色并下载新样式?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何使用withoutEvents方法临时禁用模型事件  使用Dockerfile构建java web环境  如何在IIS中新建站点并解决端口绑定冲突?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel模型事件有哪些_Laravel Model Event生命周期详解  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  如何解决hover在ie6中的兼容性问题  5种Android数据存储方式汇总  如何在宝塔面板中创建新站点?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Android 常见的图片加载框架详细介绍  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何在阿里云虚拟主机上快速搭建个人网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  利用JavaScript实现拖拽改变元素大小  如何快速重置建站主机并恢复默认配置?  如何快速选择适合个人网站的云服务器配置?  如何在阿里云香港服务器快速搭建网站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  如何在阿里云域名上完成建站全流程?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何快速辨别茅台真假?关键步骤解析  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何创建自定义Facades?(详细步骤)