在DefaultRedirectHandler.getLocationURI callback

时间:2015-05-14 07:21:46

标签: android httpclient

我有以下情况:

将Android HttpClient重定向到备用位置,重定向url返回一个url参数,该参数必须在重定向请求中作为额外的http标头传播。干涉的唯一方法是覆盖DefaultRedirectHandler.getLocationURI处理程序。 现在我的问题是:如何在

public URI getLocationURI(HttpResponse response, HttpContext context)

我可以修改即将到来的请求。

2 个答案:

答案 0 :(得分:2)

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

获取重定向网址
    Header locationHeader = response.getFirstHeader("location");
    String location = locationHeader.getValue();

location中提取您的网址参数,然后您可以通过

获取HttpRequest
    BasicHttpRequest request = (BasicHttpRequest) context.getAttribute(
                            ExecutionContext.HTTP_REQUEST);
    header.addHeader();

答案 1 :(得分:0)

我发现修改重定向请求的唯一方法是中断原始请求并在

中手动创建新请求
  RedirectHandler and overwrite getLocationURI()

原始请求被中断并抛出

 IllegalStateException