Android Java截击在经典ASP中持久化会话

Android Java截击在经典ASP中持久化会话,java,android,session,asp-classic,android-volley,Java,Android,Session,Asp Classic,Android Volley,我正在编写一个简单的应用程序,它登录到我的Web服务,然后通过SQL下载有关登录用户的一些信息 目前,我依赖谷歌的截击,可以随时发送截击、读取响应等。然而,当ASP(后端)在每个请求上创建一个新会话,从而清除任何设置的会话变量时,问题就出现了 我尝试从服务器读取响应以获取cookie,然后将其作为标题附加到任何后续截击中,但它没有按预期工作。我需要弄清楚为什么我的会话没有持续 INIT String sSessionID = ""; 我的截击呼叫 String urlLoginAttemp

我正在编写一个简单的应用程序,它登录到我的Web服务,然后通过SQL下载有关登录用户的一些信息

目前,我依赖谷歌的截击,可以随时发送截击、读取响应等。然而,当ASP(后端)在每个请求上创建一个新会话,从而清除任何设置的会话变量时,问题就出现了

我尝试从服务器读取响应以获取cookie,然后将其作为标题附加到任何后续截击中,但它没有按预期工作。我需要弄清楚为什么我的会话没有持续

INIT

String sSessionID = "";
我的截击呼叫

  String urlLoginAttempt = SERVER_ADDRESS + PAGE_LOGIN + "?u="+username+"&p="+pw;

    Response.Listener responseListener = new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
             Toast.makeText(ctx, "DEBUG\nVolley Session ID : " + sSessionID, Toast.LENGTH_SHORT).show();
        }
    };


    StringRequest stringRequest = new StringRequest(Request.Method.POST, urlWithParams, responseListener, this.errorListener) {


        //Add an extra cookie value header into the request, if cookie variable has been set
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            if (!sSessionID.equalsIgnoreCase("")) {
                params.put("Cookie", sSessionID);
            }
            return params;
        }

        @Override
        protected Response<String> parseNetworkResponse(NetworkResponse response) {
            //Volley can automatically get the session ID

            sSessionID = parseCookie(response.headers.get("Set-Cookie"));

            return super.parseNetworkResponse(response);
        }

        public String parseCookie(String cookie) {
            String[] splitCookie = cookie.split(";");
            String[] splitSessionId = splitCookie[0].split("=");
            String sCookie = splitSessionId[1];
            return sCookie;
        }
    };


    // Add the request to the RequestQueue.
    netQ.add(stringRequest);
编辑 对我的环境有一点更全面的了解。在我的Web服务器上,我有
login.asp
getdata.asp
。如果我向getdata发送截击,ASP页面将尝试查看用户是否登录到我的检查会话var
session(“userid”)
。如果没有设置值,我假设没有用户登录。页面将返回“0”,应用程序将用户切换回“我的登录”选项卡。如果在
会话(“userid”)
中设置了一个值,那么它将返回关于当前用户名的数据(JSON格式)

ASP上的会话变量似乎是实现这一点的明智方法。。。由于截击是无状态的,为了做到这一点,我似乎必须发送一个自定义头,请求显示会话变量(“Cookie”头)。但是,这不起作用,因为返回的会话变量仍然随着每个截击响应而变化

<%
//Attempt to set any session variable to begin a new session
session("userid")=-1

username=ucase(request.querystring("u"))
pw=request.querystring("p")

//for testing only:
if username="J" AND pw="pass" then
    session("userid")="188473"
    session("name")="Jammo"
    ...
    response.write("1")
else
    session("userid")=-1
    reponse.write("0")
end if
%>