8

我正在尝试为我的 android 应用程序制作一个登录脚本,该脚本会将我的电子邮件和密码发送到 PHP 服务器,验证登录,然后创建一个 PHP 会话,以便用户保持登录状态。这是我的代码,

HttpPost httppost = new HttpPost("http://server.com/login.php");
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();

public String login() {

    String userID = "";

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("email", "e@e.com"));
        nameValuePairs.add(new BasicNameValuePair("password", "admin"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

        userID = EntityUtils.toString(response.getEntity());
        //Log.v("Login response", "" + userID);



    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

    return userID;
} 

该脚本成功地将数据发送到我的服务器,并且我的 PHP 成功地让用户登录。我已经放置了“HttpClient httpclient = new DefaultHttpClient();” 在我的主要登录方法之外。这有助于存储会话,直到我调用另一个类,然后它只是再次重置会话。所以我想知道如何更改代码以便以某种方式存储“httpclient”,以便我可以保持会话并保持登录到我的服务器。谢谢!

4

2 回答 2

4

Android Http 获取会话 Cookie

获取 cookie 会话 ID 并在对服务器的下一个请求中使用该 cookie。

于 2012-07-29T23:56:07.577 回答
3

另一种方法是让您的 php 代码在其对登录的响应中回显一个包含 session_id 的字符串。让 android 应用程序检索此 id 并存储它。任何未来的请求都可以通过使用带有 sess_id=stored id 的 post 方法进行

<?php
if(isset($_POST['sess_id']))
{
session_id($_POST['sess_id']); //starts session with given session id
session_start();
$_SESSION['count']++;
}
else {
session_start(); //starts a new session
$_SESSION['count']=0;
}
echo session_id();
?>
于 2014-04-07T20:39:05.657 回答