Java http와 https 프로토콜이 반환하는 json 데이터 가져오기

현재 많은 회사들이 데이터를 json에게 되돌려주고 많은 제3자 인터페이스가 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 패키지가 부족하면 직접 다운로드해 주십시오.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기