2015-05-14 155 views
3

我有以下情形:添加请求头

的Android HttpClient的被重定向到另一个位置,重定向URL回来与必须传播作为额外的HTTP头一定URL参数重定向请求。唯一干扰的方法是重写DefaultRedirectHandler.getLocationURI处理程序。 现在我的问题:如何在

public URI getLocationURI(HttpResponse response, HttpContext context) 

我可以修改输出的请求。

回答

2

您必须创建RedirectHandler的实现并覆盖getLocationURI()。您可以通过

Header locationHeader = response.getFirstHeader("location"); 
    String location = locationHeader.getValue(); 

得到重定向URL从location提取您的网址参数,然后你可以得到HttpRequest通过

BasicHttpRequest request = (BasicHttpRequest) context.getAttribute(
          ExecutionContext.HTTP_REQUEST); 
    header.addHeader(); 
+0

感谢您的回复,最有可能的是我不得不提及我已经尝试过的所有方法,但除了中断请求重定向和手动创建绝对新请求之外,没有任何方法只能工作。你的建议是我的第一个试验,它必须是HttpUriRequest request =(HttpUriRequest)context.getAttribute(ExecutionContext.HTTP_REQUEST);它实际上并没有工作,ExecutionContext.HTTP_REQUEST引用原始请求,而不是出来。正如我所说的手动重定向,我知道。我寻找更优雅的方式来整理它。 –

0

唯一的办法,我发现是可行的修改重定向请求中断原来的一个手动创建新的请求

RedirectHandler and overwrite getLocationURI() 

原始请求被中断并抛出

IllegalStateException