리눅스 서버에서 특정 URL을 호출하여 HTML 파일을 생성하는 기능이 필요하여
curl 을 활용하여 구현하였다.
문제는 터미널로 리눅스 서버에 접속해 curl 명령을 입력하면 정상적으로 수행되나
서버 프로그램에서 Runtime.getRuntime().exec() 함수를 이용하여 수행하면
아래와 같은 오류가 발생하였다.
- 수행구문
String command = "curl \"http://계정명:패스워드@123.5.6.789:8080/ex?exParam=exValue&exParam2=exValue2\"";
Runtime.getRuntime().exec(command);
- 오류 메시지
curl: (1) Protocol "http not supported or disabled in libcurl
구글 검색 및 테스트를 하여 얻은 정보는 아래와 같다.
1. Windows OS 에서는 url 부분은 " 쌍따옴표로 감싸야 한다.
2. URL을 GET 방식으로 파라미터를 작성하게 되면 두번째 파라미터부분은 정상적으로 전달되지 않는다.
ex) www.test.com?a=1&b=2 에서 b=2 파라미터는 누락된다.
3. URL을 쌍따옴표나 따옴표로 감싸게 될 경우 해당 문자 자체가 URL의 일부로 인식하는 경우도 있다.
리눅스에서 JAVA를 통해 실행될 경우 발생하였다.
-> 나의 경우는 이 케이스 때문에 오류가 발생하였고 URL을 감싸고 있는 " ' 문자를 제거해 주었다.
에러문구에서 "http 프로토콜은 지원되지 않는다고 알럿 주고 있으며 " 문자를 URL의
일부로 인식하고 있다는 증거이다.
- 변경 후 수행구문
String command = "curl --user 계정명:패스워드 --request POST http://123.5.6.789:8080/ex --data 'exParam=exValue&exParam2=exValue2'";
Runtime.getRuntime().exec(command);
위와 같이 URL파라미터를 --data 옵션을 주어서 별도로 표기하였고, URL을 감싸는 " 문자를 제거 해주었다.
변경하니 정상적으로 실행되었다.
'IT > Linux' 카테고리의 다른 글
디렉토리별 용량 확인 명령어 (0) | 2015.06.15 |
---|---|
리눅스 tar, gz 압축 및 해제 (0) | 2015.06.12 |
시스템 부팅시 환경변수 자동 등록 (0) | 2015.06.12 |
파일의 소유자, 소유그룹 변경하기 (0) | 2015.05.29 |
쉘파일의 윈도우 개행문자 제거 방법 (0) | 2015.05.28 |
WRITTEN BY
- Dukejin
If you don't walk today, you will have to run tomorrow. Try hard, Try hard!