2012-05-22 142 views
2

我正在開發一個與我們的服務器通信的應用程序。服務器端的一個庫中存在一個錯誤。這個錯誤使得它需要與主機一起發送端口。發送請求時端口被刪除

問題是,當我發送一個請求時,端口似乎被刪除。我最初使用了HTTPClient和設置頁眉像這樣

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

但服務器端,他們只收到「company.net」

我使用requestInterceptor像這樣

 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"); 
      } 
     }); 

但也試過唉,也出現了同樣的問題。

我的最後一次嘗試是使用,而不是HttpClient的

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

你可能已經猜到結局的URLConnection。

如何發送包含端口的主機?

回答

1

這似乎是HttpClient(請參閱here)的默認行爲,因爲它將主機頭設置爲實際發送給它的主機,然後才發送請求。由於端口80是默認的HTTP端口,因此它不包含在其版本的主機中。你可以嘗試鏈接中的方法,看看它是否適合你。

+0

該方法是Apache公共庫的一部分。我在android庫中使用DefaultHttpClient – jiduvah

+0

我們在服務器端處理它。我標記爲正確,因爲它的默認行爲不太清楚 – jiduvah

+0

我很確定Android庫的DefaultHttpClient是Apache – Eliezer