问题如下:
我使用httpclient将登录数据发布到服务器。
在我的桌面上使用带有实时标头的 firefox 时,服务器将我重定向到 url2 witk 302,然后使用 302 重定向到 url3,然后我得到 200 ok。在android中,我得到了相同的登录页面和200 OK。
然后我禁用自动重定向处理得到响应并看到 302 重定向,但是
" String location = response.getHeaders("Location")[0].toString();
" 给了我相同的登录页面 url,而不是来自 firefox 的那个。
我不知道为什么会这样。
代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(uri[0]);
HttpResponse response;
String responseString = null;
HttpParams params = httpclient.getParams();
HttpClientParams.setRedirecting(params, false);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// Adding namvalue pairs here - adding correct i'm sure
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
} else{
if (statusLine.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY)
{
String location = response.getHeaders("Location")[0].toString();
}
response.getEntity().getContent().close();
}
火狐标头:
我得到的是: location= /login/