我正在尝试为我的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",这样我就可以保留会话并登录到我的服务器。非常感谢。
Android Http获取会话Cookie
获取cookie会话ID,并在下一次对服务器的请求中使用该cookie。
另一种方法是让php代码在登录响应中回显一个包含session_id的字符串。让android应用程序检索并存储此id。任何未来的请求都可以通过使用post方法进行,其中sess_id=stored id
<?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();
?>