【发布时间】:2014-08-19 14:12:47
【问题描述】:
我有一个应该在 Android 上运行的应用,希望从 2.3 到 4.4.2。
我正在尝试使用 Apache HttpClient 发出 HTTP POST 请求,并且我想启用自动重定向。
我已经用纯 Java 编写了一个代码,并安装了 HttpClient 库。它使用setRedirect(new LaxRedirectStrategy)。
Homever,我的 Android 项目不接受它。
我在互联网上遇到的所有解决方案都不起作用:
httpclient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, true);
httpclient.getParams().setParameter("http.protocol.allow-circular-redirects", true);
HttpClientParams.setRedirecting(httpclient.getParams(), true);
...
尽管 Android 4.4.2 库与我的项目捆绑在一起,但 Eclipse 无法识别 setRedirectStrategy() 方法。
如果我有时间,我会尝试自己处理重定向,或者更好的是,切换到 HttpUrlConnection,这似乎好多了。但这是一个巨大的私人图书馆,我为我必须访问的许多 Web 服务创建,我现在没有时间这样做。有没有办法以简单的方式启用自动重定向?
整个代码如下所示:
DefaultHttpClient client = new DefaultHttpClient();
client.setCookieStore(cookies);
client.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, true);
client.getParams().setParameter("http.protocol.allow-circular-redirects", true);
HttpClientParams.setRedirecting(client.getParams(), true);
client.getParams().setParameter("http.protocol.version",
HttpVersion.HTTP_1_0) ;
【问题讨论】:
-
在我看来,这不是我的问题的一个可接受的答案,但我设法通过自己处理重定向获得了我想要的,我自己用同一个客户端触发了一个 get 方法。我没有将此标记为已解决,因为我必须尽快编写一个库来访问 Shibboleth 网站,而且我无法想象在这种情况下必须处理重定向。 Objective-C 版本已经很长了,这会让 Android 版本长十倍!
标签: android redirect post httpclient