我正在开发一个与我们的服务器通信的应用程序。服务器端的其中一个库中存在错误。此错误使得需要将端口与主机一起发送。
问题在于,当我发送请求时,端口似乎被条带化了。我最初使用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");
}
});
但是,唉,同样的问题发生了。
我最后的尝试是使用URLConnection而不是httpClient
urlConnection.addRequestProperty("Host", "company.net:80");
你可能猜到了结果。
如何发送包含端口的主机?
答案 0 :(得分:1)
这似乎是HttpClient
的默认行为(请参阅here),因为它在发送请求之前将主机标头设置为您实际发送给它的主机。由于端口80是默认的HTTP端口,因此它不会在其Host版本中包含它。您可以尝试链接中的方法,看看是否适合您。