最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java獲取http和https協(xié)議返回的json數(shù)據(jù)

 更新時間:2017年01月13日 14:39:50   作者:java_阿杰  
本篇文章主要介紹了Java獲取http和https協(xié)議返回的json數(shù)據(jù) ,本篇文章提供兩個方法,幫助各位如何獲取http和https返回的數(shù)據(jù)。有興趣的可以了解一下。

現(xiàn)在很多公司都是將數(shù)據(jù)返回一個json,而且很多第三方接口都是返回json數(shù)據(jù),而且還需要使用到http協(xié)議,http協(xié)議是屬于為加密的協(xié)議,而https協(xié)議需要SSL證書,https是將用戶返回的信息加密處理,然而我們要獲取這些數(shù)據(jù),就需要引入SSL證書?,F(xiàn)在我提供兩個方法,幫助各位如何獲取http和https返回的數(shù)據(jù)。

獲取http協(xié)議的數(shù)據(jù)的方法,如下:

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

      URL url = new URL(requestUrl);
      // http協(xié)議傳輸
      HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

      httpUrlConn.setDoOutput(true);
      httpUrlConn.setDoInput(true);
      httpUrlConn.setUseCaches(false);
      // 設(shè)置請求方式(GET/POST)
      httpUrlConn.setRequestMethod(requestMethod);

      if ("GET".equalsIgnoreCase(requestMethod))
        httpUrlConn.connect();
      // 將返回的輸入流轉(zhuǎn)換成字符串
      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協(xié)議的數(shù)據(jù)的方法,如下:

public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
    JSONObject jsonObject = null;
    StringBuffer buffer = new StringBuffer();
    try {
      // 創(chuàng)建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);
      // 設(shè)置請求方式(GET/POST)
      httpUrlConn.setRequestMethod(requestMethod);

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

      // 當(dāng)有數(shù)據(jù)需要提交時
      if (null != outputStr) {
        OutputStream outputStream = httpUrlConn.getOutputStream();
        // 注意編碼格式,防止中文亂碼
        outputStream.write(outputStr.getBytes("UTF-8"));
        outputStream.close();
      }

      // 將返回的輸入流轉(zhuǎn)換成字符串
      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協(xié)議的數(shù)據(jù)和獲取http協(xié)議的區(qū)別在于

  // 創(chuàng)建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);

大家有更好的方法歡迎留言分享,以上就是本次共享的內(nèi)容 。還有,提示一下,如果復(fù)制中,缺失jar包,請自行下載

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java根據(jù)Request獲取客戶端IP

    Java根據(jù)Request獲取客戶端IP

    這篇文章主要介紹了Java根據(jù)Request獲取客戶端IP的方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • 淺析Java中Future接口的使用方法

    淺析Java中Future接口的使用方法

    在Java開發(fā)中,異步編程是提高系統(tǒng)性能和響應(yīng)能力的重要手段之一。本文將深入探討Future接口的原理和源碼解讀,幫助讀者更好地理解Future接口的工作機(jī)制和使用方法
    2023-05-05
  • 面試題:java中為什么foreach中不允許對元素進(jìn)行add和remove

    面試題:java中為什么foreach中不允許對元素進(jìn)行add和remove

    讀者遇到了一個比較經(jīng)典的面試題,也就是標(biāo)題上說的,為什么 foreach 中不允許對元素進(jìn)行 add 和 remove,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-10-10
  • Java groovy如何提升代碼運(yùn)行效率

    Java groovy如何提升代碼運(yùn)行效率

    這篇文章主要介紹了Java groovy如何提升代碼運(yùn)行效率,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 使用WebUploader實(shí)現(xiàn)上傳文件功能(一)

    使用WebUploader實(shí)現(xiàn)上傳文件功能(一)

    這篇文章主要為大家詳細(xì)介紹了使用WebUploader實(shí)現(xiàn)上傳文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 濫用@PathVariable導(dǎo)致bug原因分析解決

    濫用@PathVariable導(dǎo)致bug原因分析解決

    這篇文章主要為大家介紹了濫用@PathVariable導(dǎo)致bug原因分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • java實(shí)現(xiàn)定制數(shù)據(jù)透視表的示例詳解

    java實(shí)現(xiàn)定制數(shù)據(jù)透視表的示例詳解

    數(shù)據(jù)透視表(Pivot?Table)是一種數(shù)據(jù)分析工具,通常用于對大量數(shù)據(jù)進(jìn)行匯總、分析和展示,本文主要介紹了如何使用Java將計(jì)算項(xiàng)添加到數(shù)據(jù)透視表中,感興趣的可以了解下
    2023-12-12
  • Java的關(guān)鍵字與保留字小結(jié)

    Java的關(guān)鍵字與保留字小結(jié)

    Java 保留字列表 (依字母排序 共14組) : Java保留字是指現(xiàn)有Java版本尚未使用 但以后版本可能會作為關(guān)鍵字使用
    2012-10-10
  • 使用IDEA如何隱藏文件或文件夾

    使用IDEA如何隱藏文件或文件夾

    在IDE中隱藏不需要顯示的文件或文件夾,通過設(shè)置中的File Types選項(xiàng)來指定忽略特定文件或目錄,簡單幾步操作即可完成,提高工作區(qū)的整潔性
    2024-10-10
  • Java實(shí)現(xiàn)遞歸刪除菜單和目錄及目錄下所有文件

    Java實(shí)現(xiàn)遞歸刪除菜單和目錄及目錄下所有文件

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)遞歸刪除菜單和刪除目錄及目錄下所有文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03

最新評論

平遥县| 旌德县| 黑水县| 张北县| 泰来县| 新田县| 阿拉善右旗| 正蓝旗| 阿图什市| 阿克陶县| 巩义市| 连城县| 淮北市| 荔浦县| 余姚市| 新竹市| 阳新县| 鲁甸县| 东光县| 敦煌市| 怀集县| 容城县| 栾川县| 山东| 亚东县| 平顺县| 蛟河市| 仁寿县| 韶关市| 当雄县| 宜兰市| 山东省| 乾安县| 进贤县| 贺兰县| 醴陵市| 边坝县| 白水县| 天水市| 揭西县| 融水|