【问题标题】:Port Removed When Sending Requests发送请求时移除端口
【发布时间】:2012-05-22 10:30:50
【问题描述】:

我正在开发一个与我们的服务器通信的应用程序。服务器端的其中一个库中存在错误。此错误要求将端口与主机一起发送。

问题是当我发送请求时,端口似乎被剥离了。我最初使用 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");

你大概可以猜到结果。

如何发送包含端口的主机?

【问题讨论】:

    标签: android apache


    【解决方案1】:

    这似乎是HttpClient(参见here)的默认行为,因为它在发送请求之前将主机标头设置为您实际将其发送到的主机。由于端口 80 是默认的 HTTP 端口,因此它不包含在其主机版本中。您可以尝试链接中的方法,看看是否适合您。

    【讨论】:

    • 该方法是 apache commons 库的一部分。我在 android 库中使用 DefaultHttpClient
    • 我们在服务器端解决了这个问题。我将您标记为正确,因为它的默认行为不太清楚
    • 我很确定 Android 库的 DefaultHttpClient 来自 Apache
    • 这是我的第一个想法,但在进一步阅读此内容时.. stackoverflow.com/questions/2618573/… 建议谷歌不要关注任何已发布的 apache 库版本。课程链接到您的帖子不在 Android 库中
    • 真令人头疼...无论如何,这仍然可能是根本问题,无论代码的作者身份如何,除非有人对它可能是什么有更好的了解
    猜你喜欢
    • 2013-08-03
    • 2010-12-26
    • 2017-02-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多