如果运行以下代码,完成后您将看到 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/