使用HttpClient在POST请求上启用自动重定向

时间:2014-08-19 14:12:47

标签: android redirect post httpclient

我有一个应该在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);

...

Eclipse并不识别setRedirectStrategy()方法,尽管Android 4.4.2库与我的项目捆绑在一起。

如果我有时间,我会尝试自己处理重定向,或者更好的是,切换到HttpUrlConnection,这似乎好多了。但这是一个巨大的私人图书馆,我为很多网络服务而设,我现在没有时间去做。有没有办法以简单的方式启用自动重定向?

整个代码如下所示:

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) ;

1 个答案:

答案 0 :(得分:1)

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

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

版本似乎在android和java之间有所不同。

如果有效,请告诉我。上帝保佑。

Jonny 2 Plates