티스토리 뷰
리눅스 서버에서 특정 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 |
- Total
- Today
- Yesterday
- 룰셋
- parameter
- beautifuler
- Annotaion
- SuppressWarnings
- webtob
- beautifier
- 날짜
- Scheduled
- 디렉토리별
- 파라미터
- rollback
- brush
- crontab
- syntaxhighlighter
- du
- 어노테이션
- firewall
- flashback
- port
- 명렁어
- 복구방법
- 포트
- pmd
- 데이터
- nmap
- grep
- 리눅스
- 용량
- token
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |