Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:登录并从服务器的响应中获取PHPSESSID?_Php_Android_Session_Cookies - Fatal编程技术网

Android:登录并从服务器的响应中获取PHPSESSID?

Android:登录并从服务器的响应中获取PHPSESSID?,php,android,session,cookies,Php,Android,Session,Cookies,我是一个Android新手,对客户端和服务器之间的知识非常了解。 我正在制作一个需要登录的Android应用程序(就像任何社交网络一样)。我已经在我的数据库上使用MySQL进行了保存数据的注册活动。登录时会出现问题。我可以验证用户名和密码是否正确,但为了在服务器会话关闭之前不必再次登录,我需要从服务器保存PHPSESSID,并在每次我想看到“受保护”时检查它活动,如我的社交网络主页或个人资料。如果会话cookie不再在服务器上,我需要再次登录,以便创建新的会话cookie。 我的问题是: 如何从

我是一个Android新手,对客户端和服务器之间的知识非常了解。
我正在制作一个需要登录的Android应用程序(就像任何社交网络一样)。我已经在我的数据库上使用MySQL进行了保存数据的注册活动。登录时会出现问题。我可以验证用户名和密码是否正确,但为了在服务器会话关闭之前不必再次登录,我需要从服务器保存PHPSESSID,并在每次我想看到“受保护”时检查它活动,如我的社交网络主页或个人资料。
如果会话cookie不再在服务器上,我需要再次登录,以便创建新的会话cookie。
我的问题是:
如何从登录脚本获取PHPSESSID?
将其保存在SharedReferences中以便从服务器发送检查是否正确?
下面是我的代码unitll:

`publicstringsendpostrequest(stringrequesturl, HashMap postDataParams){

URL;
字符串响应=”;
试一试{
url=新url(请求url);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置读取超时(15000);
连接设置连接超时(15000);
conn.SETUSECHACHES(正确);
conn.setRequestMethod(“POST”);
conn.setDoInput(真);
连接设置输出(真);
OutputStream os=conn.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(操作系统,“UTF-8”);
write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if(responseCode==HttpsURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
response=br.readLine();
}否则{
response=“Error”;
}
}捕获(例外e){
e、 printStackTrace();
}
返回响应;
}
私有字符串getPostDataString(HashMap参数)引发UnsupportedEncodingException{
StringBuilder结果=新建StringBuilder();
布尔值优先=真;
对于(Map.Entry:params.entrySet()){
如果(第一)
第一个=假;
其他的
结果。追加(&);
append(URLEncoder.encode(entry.getKey(),“UTF-8”);
结果。追加(“=”);
append(URLEncoder.encode(entry.getValue(),“UTF-8”);
}
返回result.toString();
}`

您不应该使用cookies对您的移动API进行身份验证和授权。而是学习。@MadDog我是说会话cookie。我是说PHPSESSID。对不起我的英语,但我是意大利人。你的英语还可以,我理解你的问题。我的观点是,你的方法是错误的。Cookie和会话只能用于网页的身份验证/授权。移动应用程序的API应该使用OAuth或其他无状态协议。@MadDog我能问一下为什么吗?为什么我不能在第一次登录时获取phpsessid,然后在尝试查看主页时请求它?你不应该使用cookies对你的移动API进行身份验证和授权。而是学习。@MadDog我是说会话cookie。我是说PHPSESSID。对不起我的英语,但我是意大利人。你的英语还可以,我理解你的问题。我的观点是,你的方法是错误的。Cookie和会话只能用于网页的身份验证/授权。移动应用程序的API应该使用OAuth或其他无状态协议。@MadDog我能问一下为什么吗?为什么我不能在第一次登录时获取phpsessid,然后在尝试查看主页时请求它?
    URL url;
    String response = "";
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setUseCaches(true);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);


        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode = conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            response = br.readLine();
        } else {
            response = "Error";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for (Map.Entry<String, String> entry : params.entrySet()) {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}`