개발/JAVA

Java HttpClient 호출시 파라미터 있을 경우

신매력 2013. 4. 9. 13:38

HttpClient는 브라우저가 어떤 URL에 요청하면 서버를 통해 웹페이지를 뿌려주듯이
내가 브라우저의 역할을 하고, URL을 보내면 서버가 나를 브라우저라 생각하고 결과를 날려준다.

예제는 인터넷에 많이 있으니 파라미터가 있을 경우의 요점만 정리하겠음



일단 GET인지 POST인지 method 종류를 알려주어야한다.


1. GET 일 경우

String url = "http://marobiana.tistory.com";

HttpClient client = new HttpClient(); 
GetMethod method = new GetMethod(url);

client.executeMethod(method);



만약 id=marobiana, password=1234 라는 파라미터를 더 붙여야할 경우,
method 객체에 파라미터 정보를 추가한 뒤 executeMethod를 실행한다.

 method.setQueryString(쿼리스트링 또는 NameValuePair타입);



* NameValuePair는 key(String)와 Value(Object) 의 쌍이다 
https://supportweb.cs.bham.ac.uk/docs/java/jdk-1.5.0/api/org/omg/DynamicAny/NameValuePair.html 여기 참조~

GET에서는 보통 쿼리스트링으로 많이 쓴다.




2. POST 일 경우


String url = "http://marobiana.tistory.com";

HttpClient client = new HttpClient(); 
PostMethod
 method = new PostMethod(url);

client.executeMethod(method);


id=marobiana, password=1234 라는 파라미터를 더 붙여야할 경우,

 method.setRequestEntity(NameValuePair 타입);


POST에서는 NameValuePair 타입만 제공한다.



3. POST이고 content 일 경우.(JSON을 예로 들겠음)

id=marobiana, password=1234 를 JSON 스트링으로 만들어서
method.StringRequestEntity(컨텐츠, 컨텐츠의 타입, 인코딩); 형식으로 사용한다.

요딴식으로 


method.StringRequestEntity(getJSONMethodQueryString(), "application/json", encoding);


getJSONMethodQueryString() 메소드에서 json 스트링 리턴. 
encoding에는 UTF-8 이 들어있음



즉, 정리하면

GET일 땐 method.setQueryString(QueryString 또는 NameValuePair);
POST일 땐 method.setRequestEntity(NameValuePair);
컨텐츠인 POST 일땐 method.StringRequestEntity(content, content type, encode);



그리고 포트번호나 호스트에대한 설정을 하고 httpClient를 execute할 경우에는
client.execute(호스트 configuration, method) 로도 사용가능하다.