我试图用我的Android应用程序登录到https网站。如果登录成功,网站返回302响应代码,如果登录失败,网站返回200。我研究了如何使用AndroidHttpClient并查看示例,但我一直无法看到我的代码和他们的代码之间有任何区别。无论我发送给网站的用户名和密码如何,我都会得到200的回复代码 - 即使组合是正确的。自从网站使用安全的http以来,我必须做些特别的事情吗?这是我的代码。我非常感谢任何帮助。AndroidHttpClient期望响应代码302但接收200
public void login(String url, String username, String password){
CookieStore cookieStore;
HttpContext httpContext;
HttpGet httpGet;
HttpResponse httpResponse;
HttpPost post;
AndroidHttpClient httpClient;
cookieStore = new BasicCookieStore();
httpContext = new BasicHttpContext();
httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
httpClient = AndroidHttpClient.newInstance("Android");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", username));
params.add(new BasicNameValuePair("pass", password));
params.add(new BasicNameValuePair("form_id", "user_login"));
httpGet = new HttpGet(url);
post = new HttpPost(url);
try {
post.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));
httpResponse = httpClient.execute(httpGet, httpContext);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.i("My App", httpResponse.getStatusLine().getStatusCode());
}
响应代码200是磨片你的HTTP连接成功,它不会检查您登录与否。所以如果你的连接成功,它将只返回200 .. –
这个特定的网站是否可以重定向到一个登录页面,而不是返回302? (相关:http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call) –
@Lalit Poptani你知道它为什么给我一个回应代码302当我使用javax.net.ssl.HttpsURLConnection?另外,当我得到200响应时,我很确定我没有得到一个cookie来登录我。这就像它只是忽略登录请求,只是拉起登录页面。 – Cole119