JAVA 인터넷 12.2. Using REST in Java

2015.07.16 21:23

졸리운_곰 조회 수:230

12.2. Using REST in Java

 

 

Issuing HTTP GET Requests
The key class here is HttpURLConnection, obtained by invoking openConnection on a URL object. Sadly, openConnection method's signature specifies that it returns the superclass type, URLConnection, and we have to downcast the result.

The following method issues a request and returns the entire response as one long string:

public static String httpGet(String urlStr) throws IOException {
  URL url = new URL(urlStr);
  HttpURLConnection conn =
      (HttpURLConnection) url.openConnection();

  if (conn.getResponseCode() != 200) {
    throw new IOException(conn.getResponseMessage());
  }

  // Buffer the result into a string
  BufferedReader rd = new BufferedReader(
      new InputStreamReader(conn.getInputStream()));
  StringBuilder sb = new StringBuilder();
  String line;
  while ((line = rd.readLine()) != null) {
    sb.append(line);
  }
  rd.close();

  conn.disconnect();
  return sb.toString();
}

(This code is very raw; it should be properly padded with try/catch/finally blocks to ensure the reader is closed, etc.)

Remember that if the request URL includes parameters, they must be properly encoded (e.g., a space is %20, etc.). The class URLEncoder can be used to perform this encoding.

Issuing HTTP POST Requests
URL encoding is also required for POST requests, as shown in the following method:

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

public static String httpPost(String urlStr, String[] paramName,
String[] paramVal) throws Exception {
  URL url = new URL(urlStr);
  HttpURLConnection conn =
      (HttpURLConnection) url.openConnection();
  conn.setRequestMethod("POST");
  conn.setDoOutput(true);
  conn.setDoInput(true);
  conn.setUseCaches(false);
  conn.setAllowUserInteraction(false);
  conn.setRequestProperty("Content-Type",
      "application/x-www-form-urlencoded");

  // Create the form content
  OutputStream out = conn.getOutputStream();
  Writer writer = new OutputStreamWriter(out, "UTF-8");
  for (int i = 0; i < paramName.length; i++) {
    writer.write(paramName[i]);
    writer.write("=");
    writer.write(URLEncoder.encode(paramVal[i], "UTF-8"));
    writer.write("&");
  }
  writer.close();
  out.close();

  if (conn.getResponseCode() != 200) {
    throw new IOException(conn.getResponseMessage());
  }

  // Buffer the result into a string
  BufferedReader rd = new BufferedReader(
      new InputStreamReader(conn.getInputStream()));
  StringBuilder sb = new StringBuilder();
  String line;
  while ((line = rd.readLine()) != null) {
    sb.append(line);
  }
  rd.close();

  conn.disconnect();
  return sb.toString();
}

As you can see, it's not a pretty sight (and that's before adding proper try/catch/finally structures). The problem is that, out of the box, Java's support for handling web connections is pretty low-level.

A good solution can be found in the popular Apache Commons library, and in particular the httpclient set of packages. See Yahoo! guide to REST with Java for details and examples. The documentation covers several interesting extras, such as caching.

 

 

 

[출처] http://rest.elkstein.org/2008/02/using-rest-in-java.html

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
90 GC example: draw a thick line : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 234
89 SWT Draw 2D : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 158
88 SWT Button Action : Button « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 146
87 SWT Button : Button « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 193
86 SWT XML Editor: Modify DOM : Text « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 259
85 Demonstrates TreeEditor : Tree « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 218
84 Gradle을 이용하여 Java 프로젝트 빌드하기 졸리운_곰 2015.07.26 383
83 gradle을 이용한 빌드 자동화 file 졸리운_곰 2015.07.26 585
82 Maven을 넘어 Gradle로 가자. 졸리운_곰 2015.07.26 326
81 Gradle 시작하기 file 졸리운_곰 2015.07.26 392
80 REST with Java (JAX-RS) using Jersey - Tutorial file 졸리운_곰 2015.07.16 433
79 Tutorial – REST API design and implementation in Java with Jersey and Spring file 졸리운_곰 2015.07.16 830
» 12.2. Using REST in Java 졸리운_곰 2015.07.16 230
77 apache XERCES2-J Source and Binary file 졸리운_곰 2015.07.16 150
76 Multithreading in java with examples 졸리운_곰 2015.07.15 195
75 Communication between parent and child thread in Java 졸리운_곰 2015.07.15 215
74 Java - Interthread Communication 졸리운_곰 2015.07.15 196
73 JAVA 로 Shell 실행하기~ 졸리운_곰 2015.07.12 448
72 JAVA에서 쉘프로그램 실행시키기 졸리운_곰 2015.07.12 5555
71 JAVA Telnet 프로그램 코드 졸리운_곰 2015.07.12 913
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED