2012-05-22 3 views
2

Google 서버와 통신하는 앱으로 작업하고 있습니다. 서버 측 라이브러리 중 하나에 버그가 있습니다. 이 버그로 인해 호스트와 함께 포트를 보내야합니다.요청을 보낼 때 포트가 제거되었습니다.

문제는 내가 요청을 보낼 때 포트가 스트라이프 된 것처럼 보입니다. 원래는 슬프게도 HttpClient를 사용하고 그들은 단지 나 또한 그렇게

 httpClient.addRequestInterceptor(new HttpRequestInterceptor() { 

      public void process(
        final HttpRequest request, 
        final HttpContext context) throws HttpException, IOException { 
       request.setHeader("Host", "company.net:80"); 
       Log.i(TAG, "intercepted and set host header"); 
      } 
     }); 

그러나 같은 requestInterceptor를 사용하여 시도 "company.net"

을 받았다 그래서

httpClient.addHeader(new BasicHeader("Host", "company.net:80")); 

하지만 서버 측과 같은 헤더를 설정했다 , 동일한 문제가 발생했습니다.

내 마지막 시도 대신 세션 객체

urlConnection.addRequestProperty("Host", "company.net:80"); 

당신은 결과를 짐작할 수의 URLConnection의를 사용하는 것이 었습니다.

어떻게 포트를 포함한 호스트를 보내나요?

답변

1

HttpClient (here 참조)의 기본 동작 인 것처럼 보입니다. 요청을 보내기 전에 실제로 호스트 헤더를 호스트로 설정한다는 것입니다. 포트 80은 기본 HTTP 포트이므로 Host 버전에는 포트가 포함되지 않습니다. 당신은 링크에서 방법을 시도하고 그것이 당신을 위해 그것을하는지 볼 수 있습니다.

+0

그 방법은 아파치 공유 라이브러리의 일부입니다. 안드로이드 라이브러리에서 DefaultHttpClient를 사용하고 있습니다. – jiduvah

+0

우리는 서버 측에서이 서버를 사용했습니다. 나는 당신을 올바른 것으로 표시했다. 그 기본 동작이 너무 명확하지 않다. – jiduvah

+0

나는 안드로이드 라이브러리의 DefaultHttpClient가 아파치에서 나온 것이라는 것을 확신한다. – Eliezer

관련 문제