これについては多くの異なる質問がありますが、私のところは少し異なります。Android - VolleyとSessioncookieを維持する
既存のウェブサイトから「スクリーンスクレイピング」を行う必要があります。私はサイトにログインしています。私のshareprefsでcookievariableを保存し、これを使用してウェブサイトをナビゲートし、入力フィールドと値を収集することでアプリケーションにどのようにしたいかを提示します。
とにかく。ここまでは順調ですね。私はログインすることができます - >クッキーを保存する - >ログインしたユーザーとしてウェブサイトを読んでください。
問題:同じWebサイトでPOSTを実行しています。ここでクッキーはどこかで失われているようだ。ウェブサイトはそれを読むことはできませんか、それを承認しません。自分の質問へ
// onCreate
protected void onCreate(Bundle savedInstanceState) {
CookieHandler.setDefault(new CookieManager());
SESSIONID = "Cookievariable";
loadWebSite();
}
// Read website
private void loadWebSite(){
String url = "http://somewebsite";
RequestQueue queue = Volley.newRequestQueue(act);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
// Website loaded OK!
}
},
) {
// Set headers
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Cookie", SESSIONID);
Log.d("PARAMS", params.toString());
return params;
}
};
queue.add(stringRequest);
}
// Later on - Send post when button clicked
private void sendPost(){
String url = "http://somewebsite";
RequestQueue queue = Volley.newRequestQueue(act);
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
// POST SENT - But something wrong with session.
}
},
) {
// Set POST params
@Override
public Map<String, String> getParams() throws AuthFailureError {
Map<String, String> postParams = new HashMap<>();
postParams.put("SomeParam", "Someparamhere");
return postParams;
}
// Set headers
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Cookie", SESSIONID);
Log.d("PARAMS", params.toString());
return params;
}
};
queue.add(postRequest);
}