2012-12-19 5 views
2

웹 서비스를 테스트하기위한 테스트 프로그램을 작성하려고합니다. JSON 개체를 GET 메서드를 통해 웹 서비스에 보내고 있지만 작동하지 않습니다. 내 테스트 URL은 다음과 같습니다쿼리에서 "/"를 사용하여 GET 요청을 보내는 방법

http://testserver:8080/mydir/{"filename":"test.jpg", "Path":"test/2/2"} 

나는 내가 그들을 제거하면 프로그램이 잘 작동하기 때문에 "/"경로 나에게 문제를 일으키는 생각하고 있어요.

REST how to pass values containing "/" as path parameter in the URI?에 대해 java.net.URLEncoder.encode를 사용하려고 시도했지만 도움이되지 않습니다.

// some code from main method 
<snip snip> 
String url = "http://testserver:8080/mydir/"; 
String JSON = "{\"filename\":\"test.jpg\",\"Path\":\"test/2/2\"}"; 
String enc_JSON = URLEncoder.encode(JSON,"UTF-8"); 
String testGet = url + enc_JSON; 
String out2 = TestCode.httpGet(testGet); 
<snip snip> 

// code from httpGet method 
public static String httpGet(String serverURL) { 
    URL url; 
    HttpURLConnection conn; 

    try { 
     url = new URL (serverURL); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setUseCaches(false); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     conn.connect(); 
// failing at line below 
     InputStream input = conn.getInputStream(); 
<snip snip> 

내 프로그램의 결과는 내가 HTTP 응답 코드 얻을 수있다 : (400) 내가 httpGet() 메소드에 내 코드에 뭔가를 추가하는 것을 잊지 않았다 그것을 실패의 원인을 여기 내 테스트 프로그램의 코드 조각입니다 또는 JSON 개체가 경로 위치의 "/"끝에 끝에 붙어 있기 때문에 URL에서 불법적 인 일을하고 있습니까?

도움을 주셔서 감사합니다.

답변

4

REST API의 경우 일반적으로 JSON 객체가 전송 (POST)되거나 요청 본문으로 반환됩니다. 일반적으로 URL의 일부로 인코딩되지 않습니다.

GET 요청의 경우 정보를 url의 세그먼트 또는 쿼리 문자열 매개 변수로 전달할 수 있습니다. URL의 세그먼트로

:

/resourcetype/{path}/{filename} 
http://testserver:8080/resourcetype/test/2/2/test.jpg 

쿼리 문자열 PARAMS로 : 당신의 설명은

/resourcetype?path={path}&file={filename} 
http://testserver:8080/resourcetype?path=test/2/2&filename=test.jpg 
+0

감사합니다. 내 POST 메서드가 작동하기 때문에 GET으로 이동하여이 문제에 부딪 혔습니다. 이제 PUT 및 DELETE : 다시 한번 감사드립니다! – Classified

관련 문제