【问题标题】:Enable automatic redirect on POST request with HttpClient使用 HttpClient 对 POST 请求启用自动重定向
【发布时间】: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


【解决方案1】:

我遇到了类似的问题(我现在为 REST API 使用 volley 库),但我认为添加它可能会有所帮助:

httpclient.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_0)

android 和 java 的版本似乎有所不同。

让我知道这是否有效。上帝保佑。

强尼 2 盘

【讨论】:

  • 我看到有人说这有帮助,但我不知道是否应该将它与另一个'setParameter'一起放置或单独放置。您需要其他人启用重定向吗?
  • OK 在你的代码中插入这个,但是你粘贴你的完整代码,这样我和社区的其他人就可以看到你在做什么。
  • 我在上面的 3 中添加了您的代码行,但它不起作用。请参阅上面的代码。
  • 放置 client.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_0) ;在调用 HttpClientParams.setRedirecting() 方法之前!
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多