http패킷을 보내고 간단히 결과를 출력하는 내용을 구현하고 있었는데,
돌아오는 패킷에서 결과가 http protocol 이 아닌 http/xml 패킷으로 돌아왔다.
패킷을 떠보니 http protocol 부분바깥에 response가 존재했다.
commons-httpclient 의 getResponseBodyAsStream함수로 호출이 가능했다.
library 다운로드 링크
http://hc.apache.org/downloads.cgi
commons-httpclient
commons-logging
commons-codec
샘플 예제는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; public class SampleMain { public static void main(String args[]){ HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod("http://localhost/test.do"); //임의의 요청 URL로 요청 // GETMethod,PUTMethod,POSTMethod 상황에 따른 요청 방식 //outputStream대신 setRequestHeader,setRequestBody함수 사용내용 추가. InputStream is = null; BufferedReader br = null; String result = ""; String line = null; //단순한 스트림 출력내용. try { int statusCode = client.executeMethod(postMethod); if (statusCode == 200) { is = postMethod.getResponseBodyAsStream();//zip,xml등을 받도록 br = new BufferedReader(new InputStreamReader(is)); while ((line = br.readLine()) != null) { result += line; } } else { System.out.println(statusCode); } } catch (Exception e) { e.printStackTrace(); }finally{ try { if(br != null){ br.close(); } if(is != null){ is.close(); } } catch (Exception e) { e.printStackTrace(); } } } } | cs |
'Java' 카테고리의 다른 글
Preparestatement CANNOT order by (0) | 2014.05.26 |
---|---|
자바 default charset 에 관하여 (0) | 2014.05.07 |
JAVA Encoding 과 Decoding에 대한 정리 (0) | 2013.11.14 |
Illegal group reference 문제 해결 , 원인 replaceAll 매개변수 (0) | 2013.11.12 |
HttpURLConnection setTimeout 적용 안될때, 안된다고 착각 할 때 (2) | 2013.11.07 |