如果运行以下代码,您将看到完成后URI的值为“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());
}
答案 0 :(得分:2)
来自docs(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);
答案 1 :(得分:0)
Android代码?
为什么代码在main?我认为除了JavaSE之外的程序中应该没有main方法。 HttpGet已经是HttpUriRequest对象,为什么不使用它?
我不是一个专家,也许这可能有所帮助。