Java 如何使用HttpClient在android中管理PHP会话?

Java 如何使用HttpClient在android中管理PHP会话?,java,php,android,cookies,httpclient,Java,Php,Android,Cookies,Httpclient,我正在构建一个php API,需要客户端登录才能返回一些信息。。此页面的代码如下所示:` include('connect.php'); session_start(); if(isset($_SESSION['username'])) { # select data from the database and echo it back. } else { session_unset(); session_destroy(); echo -1; } ?>

我正在构建一个php API,需要客户端登录才能返回一些信息。。此页面的代码如下所示:`
include('connect.php');
session_start();
if(isset($_SESSION['username'])) {
    # select data from the database and echo it back.
}
else {
    session_unset();
    session_destroy();
    echo -1;
}
?>
但是在此之前,客户应该使用另一个页面登录`
if (isset($_GET['usr']) && isset($_GET['password'])){
    $usr = $_GET['usr'];
    $passwd = $_GET['password'];

    $login = 0;
    $stmt = $conn->prepare("select * from users where userName=? and passwd =?");
    $stmt->execute(array($usr,$passwd));
    while($row = $stmt->fetch()) {
            $login = 1;
            session_start();
            $id = session_id();
            $_SESSION['username'] = $usr;
            break;
    }

    if($login == 1) {       
        echo "signed on";
    }

    if($login == 0) {
        echo "username or password incorrect";
    }
}
else {
    echo "parameter not set";
}

?>
当我在浏览器中尝试此功能时,效果非常好。但是当我从Android应用程序中尝试这个方法时,它似乎不起作用,我用SeTead的方法设置了PHPSESSID cookie,也尝试了这里的答案,但是它不起作用,我可以登录,当在CookiSeToRE中打印Cookie时,我可以看到PHPSeSID被设置,但是服务器也不能认为我登录了。 这是我的密码
ClientUtils.java


LoginTask.java

但这不起作用我总是得到错误的回答,我是不是错过了什么?除了sessionId之外,还有其他标题吗?
请帮助..

我对HTTP组件了解不多,但有一个很好的网页可以帮助您:

还有:

  • 与其简单地启动PHP会话,不如尝试获取
  • session\u id()
    public class ClientUtils {
    
    public static final DefaultHttpClient myHttpClient = new DefaultHttpClient();
    public static final HttpContext httpContext = new BasicHttpContext();
    public static final CookieStore cookieStore = new BasicCookieStore();
    
    
    public static void config() {
        httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
    }
    
    public static void printCookies() {
        for(Cookie k :cookieStore.getCookies())
            Log.d(k.getName(), k.getValue());
         }
    }
    
    public class LoginTask extends AsyncTask<String, Integer, String> {
    protected String doInBackground(String... url) {
        try {
            ClientUtils.config();
            String urlll = "http://192.168.200.15/login.php?usr=monim&password=monim";
            HttpGet httpget = new HttpGet(urlll);               
            HttpResponse response = ClientUtils.myHttpClient.execute(httpget, ClientUtils.httpContext); 
            ClientUtils.printCookies(); //this print the value of PHPSESSID
        }catch(Exception e) {}
        return null;
    }
    protected void onPostExecute(String... url) {
        // do something 
    }
    }
    
    HttpGet getRequest = new HttpGet(url);
        getRequest.addHeader("accept", "application/json");
        HttpResponse response = ClientUtils.myHttpClient.execute(getRequest, ClientUtils.httpContext);