2009-09-24 4 views
0

나는 그것에 텔넷 (Telnet)함으로써, 서버와 통신을 시도하고 텔넷 터미널을 통해 다음과 같은 명령을 전송 : 이것은 매우 잘 작동Jakarta HttpClient는 다음 작업을 위해 sutitable입니까?

POST /%5bvUpJYKw4QvGRMBmhATUxRwv4JrU9aDnwNEuangVyy6OuHxi2YiY=%5dImage? HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 164 

[SORT]=0,1,0,10,5,0,KL,0&[FIELD]=33,38,51,58,68,88,78,98,99,101,56,57,69,70,71,72,89,90,91,92,59,60,61,62,79,80,81,82&[LIST]=1155.KL,1295.KL,7191.KL,0097.KL,2267.KL 

. 이제 텔넷을 사용하여 서버와 통신 할 때 HttpClient를 사용하여 서버와 통신 할 수 있기를 바랍니다. 원시 TCP 소켓을 사용하는 대신 HttpClient를 사용하려는 이유는 HttpClient가 NTLM을 지원하기 때문입니다. 내가의 NameValuePair와 POST 메서드를 사용하면

그러나 :

new NameValuePair("[SORT]", "0,1,0,10,5,0,KL,0") 

요청은 URL 인코딩이 될 것입니다. 서버가 URL로 인코딩 된 요청을 이해하지 못합니다.

%5BSORT%5D: 0%2C1%2C0%2C10%2C5%2C0%2CKL%2C0 

내가 이것을 피할 수있는 방법이 있습니까? 그렇지 않다면 사용할 수있는 대체 라이브러리는 무엇입니까? NTLM도 지원하고 싶습니다. 귀하의 요청 대신 POST의 GET 요청을 할 수있다 HttpClient를 형성하고이 헤더를 찾을 수 없기 때문에

답변

1

다른 스레드에서 언급했듯이 이것은 유효한 HTTP POST가 아닙니다. 따라서 HttpClient의 기본 게시 메커니즘을 사용하여 수행 할 수 없습니다. 당신은 무효 한 몸을 스스로 만들고 게시해야합니다.

, 당신은 코드가 작동해야 다음, HttpClient를 3를 사용하는 가정

HttpClient httpClient = new HttpClient();  
    PostMethod method = new PostMethod(url);   
    String badFormPost = "[SORT]=0,1,0,10,5,0,KL,0&[FIELD]=33,38,51,58,68,88,78,98,99,101,56,57,69,70,71,72,89,90,91,92,59,60,61,62,79,80,81,82&[LIST]=1155.KL,1295.KL,7191.KL,0097.KL,2267.KL"; 
    RequestEntity entity = new StringRequestEntity(badFormPost, 
      "application/x-www-form-urlencoded", "UTF-8"); 
    method.setRequestEntity(entity); 
    method.setContentChunked(false); 
    httpClient.executeMethod(method); 
      ... 
+0

난 그냥 포기하고 URLConnection을 사용하기로 결정했습니다. 너 나를 구해줘. :) –

0

그것은 URL 인코딩 점점 :

에 대한
Content-Type: application/x-www-form-urlencoded

봐 HttpClient를 제대로 Content-Type 헤더를 설정하는 설정하고 귀하의 요청은 POST가 아니라 get, 당신이 황금이어야합니다.

+0

post.setRequestHeader을 사용하여 호 ("콘텐츠 유형을", "응용 프로그램/x-www-form-urlencoded를"); 어느 쪽도 일하지 않을 것이다. 아직 인코딩 중입니다. –

+0

ZZ 코더가 언급 한 이유 때문입니다. 조작 된 POST 본문을 사용하고 있습니다. 올바르게 인코딩되지 않았습니다. 올바른 POST 본문을 처리하기 위해받는 측을 수정하면 작동 할 것입니다. – Asaph

관련 문제