java - HttpClient 4.1 并不总是返回主机值

标签 java httpclient

如果运行以下代码,完成后您将看到 URI 的 Host 值为“null”。这是无效的!执行请求后,它应该始终有一个 URI。

我试图在请求页面后从上下文中获取当前页面(以防发生重定向)。

对于造成的困惑,我深表歉意。我提到重定向是因为我认为这有助于更轻松地说明我的问题。下面的代码应该适用于重定向的页面和未重定向的页面。

插入您最喜欢的网站,没关系。最终的解决方案必须适用于任何网站......那些被重定向的网站和那些没有重定向的网站。

我错过了什么?

public static void main(String args[]) throws ClientProtocolException, IOException
{
    HttpParams httpParams = new BasicHttpParams();
    HttpClient httpclient = new DefaultHttpClient(httpParams);
    HttpGet httpGet = new HttpGet("http://www.google.com/");
    HttpContext context = new BasicHttpContext();
    httpclient.execute(httpGet, context);
    HttpUriRequest currentReq = (HttpUriRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);
    System.out.println("New URI host (why is it null?): " + currentReq.getURI().getHost());
}

最佳答案

来自文档(http://hc.apache.org/httpcomponents-client-ga/tutorial/html/httpagent.html)

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpContext localContext = new BasicHttpContext();
HttpGet httpget = new HttpGet("http://localhost:8080/"); 
HttpResponse response = httpclient.execute(httpget, localContext);
// here:
HttpHost target = (HttpHost) localContext.getAttribute(
        ExecutionContext.HTTP_TARGET_HOST);

关于java - HttpClient 4.1 并不总是返回主机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127429/

相关文章:

java - 尝试 Spring 3 MVC,出现页面错误

java - 如何在selenium中使用By.tagName查找子标记名?

c# - 使用类型化的 HttpClient 创建 LinkedTokenSource

java - HttpClient 上严格可靠的超时

angular - 批处理图形 API 中的 InvalidRequest

java - 无法在 linux 上使用 tomcat 实现 waffle 身份验证。 javax.security.auth.login.LoginException :

java - Spring Security 默认使用的 AuthenticationProvider 和 UserDetailsS​​ervice

java - 从 URL 下载文件

C# 通过配置文件忽略证书错误

Android:loopj 未导入