当我宣布一个cookie商店时,我修复了我的应用程序中的崩溃和错误,但它没有保存cookie或其他位置出错。
首先我称这两行:
AsyncHttpClient client = new AsyncHttpClient();
PersistentCookieStore myCookieStore;
然后我有一个POST:
public void postRequestLogin(String url, RequestParams params) {
myCookieStore = new PersistentCookieStore(this);
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
client.setCookieStore(myCookieStore);
System.out.println(response);
if(response.contains("Login successful!")) {
TextView lblStatus = (TextView)findViewById(R.id.lblStatus);
lblStatus.setText("Login successful!");
getRequest("url");
} else {
TextView lblStatus = (TextView)findViewById(R.id.lblStatus);
lblStatus.setText("Login failed!");
TextView source = (TextView)findViewById(R.id.response_request);
source.setText(response);
}
}
});
}
然后它应该保存Logincookies并将其用于GET请求:
public void getRequest(String url) {
myCookieStore = new PersistentCookieStore(this);
client.get(url, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
client.setCookieStore(myCookieStore);
System.out.println(response);
TextView responseview = (TextView) findViewById(R.id.response_request);
responseview.setText(response);
}
});
}
但它不使用cookies。当我执行GET请求时,我已经注销了。
编辑:我忘了说我使用了本教程中的lib:http://loopj.com/android-async-http/
答案 0 :(得分:2)
我认为问题是您在请求完成后设置了cookie存储(在onSuccess
方法中)。在提出请求之前尝试设置它:
myCookieStore = new PersistentCookieStore(this);
client.setCookieStore(myCookieStore);
client.post(url, params, new AsyncHttpResponseHandler() {
您还在每个请求上创建一个新的Cookie存储区。如果您执行多个请求会发生什么?它将创建一个新的cookie商店并使用它(新的cookie商店将没有你的cookie)。尝试将这部分代码移动到构造函数中:
myCookieStore = new PersistentCookieStore(this);
client.setCookieStore(myCookieStore);
然后将其从其他功能中删除。