Сбой php-сессии в приложении Android

Я создаю приложение для входа в android, в котором я нахожу URL-адрес (с именем пользователя и паролем) до этой части, он работает нормально, но после этого, когда я нажимаю URL-адрес (после аутентификации пользователя), он ничего не возвращает (т. Е. сообщение об ошибке, как пожалуйста, зарегистрируйтесь сначала). Однако он отлично работает в очень похожем приложении iphone и в браузере.

Я не мог понять, в чем проблема. Есть ли проблемы на стороне сервера (т. Е. В кодировании php) или что-то не так с приложением android. Мы не можем на самом деле обвинять кодировку на стороне сервера, потому что она отлично работает для того же приложения iphone и в браузере.

Любая идея или помощь будут высоко оценены. Благодарю.

В вашем скрипте Php используется токен сеанса для идентификации посетителя при просмотре сайта через браузер. Усушно хранится в переменной PHPSESSID.

Если вы хотите, чтобы ваше приложение Android оставалось аутентифицированным на стороне сервера, вам нужно получить этот идентификатор после первого подключения, а затем отправить его в заголовки всех ваших последующих запросов.

** EDIT: ** Это то, что вы хотите сделать: как управлять файлами cookie с помощью HttpClient в Android и / или Java?

Вы можете использовать активное соединение DefaultHttpClient и делать проверки для каждого мобильного запроса на стороне сервера через $_SESSION . Вот небольшой пример кода (не для производства)

Сначала есть класс:

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class NetClient { private HttpClient client = null; public NetClient() { client = new DefaultHttpClient(); } public String request(String url) throws ClientProtocolException, IOException { HttpPost post = new HttpPost(url); HttpResponse res = client.execute(post); BufferedReader br = new BufferedReader(new InputStreamReader(res.getEntity().getContent())); String data = ""; String line = ""; while ((line = br.readLine()) != null) { data = data + line; } return data; } public String login(String url) throws ClientProtocolException, IOException { HttpPost post = new HttpPost(url); ArrayList pa = new ArrayList(); pa.add( new BasicNameValuePair( "username", "admin")); pa.add( new BasicNameValuePair( "password", "admin")); post.setEntity( new UrlEncodedFormEntity(pa, "UTF-8")); HttpResponse res = client.execute(post); BufferedReader br = new BufferedReader(new InputStreamReader(res.getEntity().getContent())); String data = ""; String line = ""; while ((line = br.readLine()) != null) { data = data + line; } return data; } } 

Затем в mainactivity.java

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); try { NetClient n = new NetClient(); String k = n.login("http://x.com/testAREA/securetrans/login.php"); Log.w("login result", k); String l = n.request("http://x.com/testAREA/securetrans/content.php"); Log.w("ask if logged in", l); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Где login.php

 <?php session_start(); if(isset($_POST['username'])) { $username = $_POST['username']; $password = $_POST['password']; if($username == 'admin' && $password == 'admin') { $_SESSION['username'] = $username; echo "admin setted"; exit; } else { echo "-1"; } } ?> 

и content.php :

 <?php session_start(); if(isset($_SESSION['username'])) { echo "login ok"; } else { echo "not login"; } ?> 

Когда мы запускаем этот образец кода, он заканчивается

 echo "login ok"; 

Дополнительная информация: http://www.pipiscrew.com/2014/11/phpandroid-secure-connection-with-session-variable/