Много разных вопросов об этом, но мой немного отличается.Android - Волейбол и хранение Sessioncookie
Мне нужно сделать своего рода «скрининг скриншотов» с существующего веб-сайта. Я вхожу на сайт. Сохраняя cookieariable в моих shareprefs и используя это, чтобы перемещаться по веб-сайту и представлять их, как я хочу его в своем приложении, собирая поля ввода и значения.
В любом случае. Все идет нормально. Im в состоянии войти -> сохранить cookie -> читать сайт как зарегистрированный пользователь.
Задача: Выполнение 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);
}