Вопрос про AsyncTask HttpURLConnection. КАк сохранить сессию
Отправляю на сервер с php GET запросы, и на каждый ответ получаю новую сессию. Можно ли как то получать ответы в одной сессии php?
Ответы (1 шт):
Автор решения: Вася Воронцов
→ Ссылка
Пусть нужная строка, содержащая в себе PHPSESSID, называется ssid, тогда следовало бы сделать следующее:
String ssid = null;
class Conn extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL("https://yourwebsite.com");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
if (ssid != null) con.setRequestProperty("Cookie", ssid);
con.connect();
List<String> cookies = con.getHeaderFields().get("Set-Cookie");
for (String value : cookies)
if (value.contains("PHPSESSID")) ssid = value.substring(0, value.length() - 8);
/* Не уверен, что всегда в конце PHPSESSID ставится
"; path=/", но в моих опытах он был, поэтому -8 */
con.disconnect();
} catch (Exception e) {
//output e.toString();
};
};
return "finish";
};
Уже в AsyncTask проверяется значение ssid, поэтому, скорее всего, нужно будет выполнить его перед началом работы, а потом уж собственно запросы.