使用android查询时php服务器上的会话丢失

使用android查询时php服务器上的会话丢失,php,android,ajax,httpserver,android-query,Php,Android,Ajax,Httpserver,Android Query,我在使用AndroidQuery ajax方法时遇到问题 以下是我在服务器上为page1.php编写的php代码: <?php session_start(); $_SESSION["valid_user"] = "mysession"; echo '{ "value" : "S_'.$_SESSION["valid_user"].'" }' ; ?> 下面是服务器上page2.php的php代码: <?php session_start(); echo '{ "valu

我在使用AndroidQuery ajax方法时遇到问题

以下是我在服务器上为page1.php编写的php代码:

<?php
session_start();
$_SESSION["valid_user"] = "mysession";
echo '{ "value" : "S_'.$_SESSION["valid_user"].'" }' ;
?>

下面是服务器上page2.php的php代码:

<?php
session_start();
echo '{ "value" : "S_'.$_SESSION["valid_user"].'" }' ;
?>

所以,在android上,图像下方是我的应用程序屏幕:

“运行页面1”按钮的事件为:

aQuery.ajax("http://www.example.com/page1.php", JSONObject.class, new AjaxCallback<JSONObject>() {
        @Override
        public void callback(String url, JSONObject json, AjaxStatus status) {
            Toast.makeText(aQuery.getContext(), json.getString("valid_user"), Toast.LENGTH_LONG).show(); // print : S_mysession
        }
    });
aQuery.ajax("http://www.example.com/page2.php", JSONObject.class, new AjaxCallback<JSONObject>() {
        @Override
        public void callback(String url, JSONObject json, AjaxStatus status) {
            Toast.makeText(aQuery.getContext(), json.getString("valid_user"), Toast.LENGTH_LONG).show(); // print : S_
        }
    });
aQuery.ajax(“http://www.example.com/page1.php,JSONObject.class,新的AjaxCallback(){
@凌驾
公共无效回调(字符串url、JSONObject json、AjaxStatus状态){
Toast.makeText(aQuery.getContext()、json.getString(“有效用户”)、Toast.LENGTH\u LONG.show();//打印:S_mysession
}
});
“运行页面2”按钮的事件为:

aQuery.ajax("http://www.example.com/page1.php", JSONObject.class, new AjaxCallback<JSONObject>() {
        @Override
        public void callback(String url, JSONObject json, AjaxStatus status) {
            Toast.makeText(aQuery.getContext(), json.getString("valid_user"), Toast.LENGTH_LONG).show(); // print : S_mysession
        }
    });
aQuery.ajax("http://www.example.com/page2.php", JSONObject.class, new AjaxCallback<JSONObject>() {
        @Override
        public void callback(String url, JSONObject json, AjaxStatus status) {
            Toast.makeText(aQuery.getContext(), json.getString("valid_user"), Toast.LENGTH_LONG).show(); // print : S_
        }
    });
aQuery.ajax(“http://www.example.com/page2.php,JSONObject.class,新的AjaxCallback(){
@凌驾
公共无效回调(字符串url、JSONObject json、AjaxStatus状态){
Toast.makeText(aQuery.getContext()、json.getString(“有效用户”)、Toast.LENGTH\u LONG.show();//打印:S_
}
});
首先我点击“运行页面1”按钮,然后显示“S_mysession”,所以接下来我点击“运行页面2”按钮,然后显示“S_”,为什么我的会话在其他连接中被AQuery.ajax丢失?!
请帮助我…

我正在使用org.apache.httpcomponents插件,它可以正常工作! 只需在此处将代码添加到build.gradle文件:

compile 'org.apache.httpcomponents:httpcore:4.4.4'
compile 'org.apache.httpcomponents:httpmime:4.3.5'
因此,在课堂下使用:

/* saleh mosleh , www.smprogram.com */
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
interface CallBackAjax {
    void success(JSONObject json);
}
public class Ajax {
private Context that;
public static HttpClient httpclient = null;
public Ajax(Context t){
    that = t;
    if(httpclient == null) {
        httpclient = new DefaultHttpClient();
    }
}
public HttpGet _httpget;
private String GET(String url){
    InputStream inputStream = null;
    String result = "";
    try {
        _httpget = new HttpGet(url);
        _httpget.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8");
        HttpResponse httpResponse = httpclient.execute(_httpget);
        inputStream = httpResponse.getEntity().getContent();
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
private String POST(String url ,List<NameValuePair> nameValuePair){

    InputStream inputStream = null;
    String result = "";
    HttpPost httpPost = new HttpPost(url);
    try {
        httpPost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8");
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair,"UTF-8"));
        HttpResponse httpResponse = httpclient.execute(httpPost);
        inputStream = httpResponse.getEntity().getContent();
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
private String POSTbyFile(String url ,List<NameValuePair> nameValuePair){
    String result = "";
    InputStream inputStream = null;
    try {
        HttpPost httpPost = new HttpPost(url);
        String boundary = "-------------" + System.currentTimeMillis();
        httpPost.setHeader("Content-type", "multipart/form-data; boundary="+boundary);

        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

        for(int index=0; index < nameValuePair.size(); index++) {
            if(nameValuePair.get(index).getName().equalsIgnoreCase("file")) {
                File file = new File(nameValuePair.get(index).getValue());
                FileBody fb = new FileBody(file);
                entityBuilder.addPart(nameValuePair.get(index).getName(), fb);
            } else {
                entityBuilder.addTextBody(nameValuePair.get(index).getName(), nameValuePair.get(index).getValue());
            }
        }

        HttpEntity entity = entityBuilder.setBoundary(boundary).build();
        httpPost.setEntity(entity);
        HttpResponse httpResponse = httpclient.execute(httpPost);
        inputStream = httpResponse.getEntity().getContent();
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}
public  String convertInputStreamToString(InputStream inputStream) throws IOException {
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
    String line = "";
    String result = "";
    while((line = bufferedReader.readLine()) != null)
        result += line;

    inputStream.close();
    return result;

}

public boolean isConnected(){
    ConnectivityManager connMgr = (ConnectivityManager) that.getSystemService(Activity.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected())
        return true;
    else
        return false;
}

private class HttpGetAsyncTask extends AsyncTask<String, Void, String> {
    public CallBackAjax callback;
    @Override
    protected String doInBackground(String... urls) {
        return GET(urls[0]);
    }
    @Override
    protected void onPostExecute(String result) {
        //Toast.makeText(that, result, Toast.LENGTH_LONG).show();
        JSONObject json = null;
        try {
            json = new JSONObject(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        callback.success(json);
    }
}
private class HttpPostAsyncTask extends AsyncTask<String, Void, String> {
    public CallBackAjax callback;
    public List<NameValuePair> nameValuePair;
    @Override
    protected String doInBackground(String... urls) {
        return POST(urls[0], nameValuePair);
    }
    @Override
    protected void onPostExecute(String result) {
        //Toast.makeText(that, result, Toast.LENGTH_LONG).show();
        JSONObject json = null;
        try {
            json = new JSONObject(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        callback.success(json);
    }
}
private class HttpPostFileAsyncTask extends AsyncTask<String, Void, String> {
    public CallBackAjax callback;
    public List<NameValuePair> nameValuePair;
    @Override
    protected String doInBackground(String... urls) {
        return POSTbyFile(urls[0], nameValuePair);
    }
    @Override
    protected void onPostExecute(String result) {
        //Toast.makeText(that, result, Toast.LENGTH_LONG).show();
        JSONObject json = null;
        try {
            json = new JSONObject(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        callback.success(json);
    }
}
public void get(String url ,CallBackAjax callback){
    try {
        if(isConnected()) {
            HttpGetAsyncTask async = new HttpGetAsyncTask();
            async.callback = callback;
            async.execute(url);
        }else{
            callback.success(null);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

public void post(String url , List<NameValuePair> params ,CallBackAjax callback){
    try {
        if(isConnected()) {
            HttpPostAsyncTask async = new HttpPostAsyncTask();
            async.nameValuePair = params;
            async.callback = callback;
            async.execute(url);
        }else{
            callback.success(null);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

public void postbyfile(String url , List<NameValuePair> params ,CallBackAjax callback){
    try {
        if(isConnected()) {
            HttpPostFileAsyncTask async = new HttpPostFileAsyncTask();
            async.nameValuePair = params;
            async.callback = callback;
            async.execute(url);
        }else{
            callback.success(null);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}
}
/*saleh mosleh,www.smprogram.com*/
导入android.app.Activity;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.AsyncTask;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.entity.mime.HttpMultipartMode;
导入org.apache.http.entity.mime.MultipartEntityBuilder;
导入org.apache.http.entity.mime.content.FileBody;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.protocol.http;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.List;
接口回调ajax{
无效成功(JSONObject json);
}
公共类Ajax{
私人背景;
公共静态HttpClient HttpClient=null;
公共Ajax(上下文t){
这等于t;
if(httpclient==null){
httpclient=新的DefaultHttpClient();
}
}
公共httpgetu HttpGet;
私有字符串获取(字符串url){
InputStream InputStream=null;
字符串结果=”;
试一试{
_httpget=新的httpget(url);
_setHeader(HTTP.CONTENT_TYPE,“application/x-www-form-urlencoded;charset=UTF-8”);
HttpResponse HttpResponse=httpclient.execute(_httpget);
inputStream=httpResponse.getEntity().getContent();
如果(inputStream!=null)
结果=convertInputStreamToString(inputStream);
}捕获(例外e){
e、 printStackTrace();
}
返回结果;
}
私有字符串POST(字符串url,列表名称值对){
InputStream InputStream=null;
字符串结果=”;
HttpPost HttpPost=新的HttpPost(url);
试一试{
setHeader(HTTP.CONTENT_TYPE,“application/x-www-form-urlencoded;charset=UTF-8”);
setEntity(新的UrlEncodedFormEntity(nameValuePair,“UTF-8”);
HttpResponse HttpResponse=httpclient.execute(httpPost);
inputStream=httpResponse.getEntity().getContent();
如果(inputStream!=null)
结果=convertInputStreamToString(inputStream);
}捕获(例外e){
e、 printStackTrace();
}
返回结果;
}
私有字符串POSTbyFile(字符串url,列表名称值对){
字符串结果=”;
InputStream InputStream=null;
试一试{
HttpPost HttpPost=新的HttpPost(url);
字符串边界=“--------------”+System.currentTimeMillis();
httpPost.setHeader(“内容类型”、“多部分/表单数据;边界=“+boundary”);
MultipartEntityBuilder entityBuilder=MultipartEntityBuilder.create();
entityBuilder.setMode(与HttpMultipartMode.BROWSER_兼容);
对于(int index=0;index