티스토리 뷰
JAVA 웹프로그래밍을 하다보면 가끔은 웹페이지에서가 아닌 서버단에서 특정 URL을 호출해야 하는 경우가 생기게 된다.
보통은 JSP단에서 특정 URL 호출 하는 방법은 간단하다.
단순하게 URL을 POST방식이던 GET 방식이던 호출만 하면 되기 때문이다.
하지만 JAVA 인 서버단에서 호출하게 해야 할 경우 어떻게 해야 할까?
처음 해보는 사람들은 모르는 경우가 있을지 모른다. 필자 또한 처음에는 몰랐기 때문이다.
일단 이번 포스팅은 HttpClient 를 사용하여 애플리케이션 프로그램에서 웹페이지를 호출해볼까 한다.
---------------------------------------------------------------------------------------------
import java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
HttpClient client = new HttpClient();
PostMethod remotecall = new PostMethod("http://localhost/test.jsp");//주석1
remotecall.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=euc-kr");
// Prepare parameters
NameValuePair email = new NameValuePair("email1", "djusti@naver.com");//주석2
remotecall.setRequestBody(new NameValuePair[] {email});
try {
client.executeMethod(remotecall);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (remotecall.getStatusCode() == HttpStatus.SC_OK) { //200이면 정상
// result = this.dataParse(remotecall);
Header[] headers = remotecall.getResponseHeaders();
for(int i = 0; i < headers.length; i++){
System.out.println(headers[i].getName() + ": " + headers[i].getValue());
}
String resultBody = "";
try {
resultBody = new String(remotecall.getResponseBodyAsString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
System.out.println(resultBody); //
}else{
//result.put("CHK", "0");
}
}
}
------------------------------------------------------------------------------------------
간단한 소스.
일단 소스 설명을 하면 주석1 이라고 적힌 곳이 호출할 웹페이지 주소.
PostMethod remotecall = new PostMethod("http://localhost/test.jsp");
해당 소스는 GET방식이 아닌 POST 방식으로 호출하는 소스.
("http://localhost/test.jsp"); 이 부분에 호출할 웹페이지 URL 주소를 적으면 된다.
Prepare parameters
NameValuePair email = new NameValuePair("email1", "djusti@naver.com");//주석2
이 부분은 파라메터를 설정하는 부분.
테스트로 email1이라는 파라메터값을 설정해서 셋팅해주고 있다.
client.executeMethod(remotecall);
호출할 url에 파라메터값과 함께 전송이 되어짐.
remotecall.getStatusCode() 값이 200 을 리턴하게 되면 정상.
정상적으로 받아왔기 때문에 이곳에서 결과값을 파싱해서 사용하면 됨.
Header[] headers = remotecall.getResponseHeaders();
for(int i = 0; i < headers.length; i++){
System.out.println(headers[i].getName() + ": " + headers[i].getValue());
}
어떠한 값이 헤더값이 들어 있는지 확인하기 위해서 루프 돌면서 헤더값에 들어 있는 값들을 출력하고 있다.
resultBody = new String(remotecall.getResponseBodyAsString());
리턴된 body값들을 스트링으로 변환시켜 준다.
실질적으로 resultBody 변수에 리턴값이 저장하게 된다.
호출한 웹페이지 html 출력 이 정보 가지고 파싱해서 원한는 값을 추출해서 사용하면 원하는 정보를 얻게 됨.
JAVA httpClient 사용하기 편을 이만 마칠까 한다.
'JAVA(프로그래밍)' 카테고리의 다른 글
자바 내장 데이터형 알아보자 (0) | 2018.01.02 |
---|---|
java 기초강좌 조건문 알아보자 (0) | 2018.01.02 |
자바스크립트에서 for 루프 고찰 (0) | 2018.01.01 |
자바 이클립스 다운로드 최신판 설치하기 (0) | 2017.12.28 |
JAVA WAS 서버단에서 이미지 처리하기 (0) | 2017.12.27 |
- Total
- Today
- Yesterday
- java treemap
- java LinkedHashMap
- java 메모장
- java 네트워크
- java문자열저장
- 자바 패키지
- java배열
- 자바 랩퍼
- java 노트패드
- java 소켓
- 자바
- java텍스트파일저장
- 객체파일저장
- java iterator
- Java
- linkHashMap
- java tihs
- java replaceAll
- java Vector
- java wrapper
- java ArrayList
- java Properties
- java wrapper class
- java join
- File Class
- java StringBuffer
- java문자열자르기
- java File
- java Enumeration
- java substring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |