Android Java截击在经典ASP中持久化会话
我正在编写一个简单的应用程序,它登录到我的Web服务,然后通过SQL下载有关登录用户的一些信息 目前,我依赖谷歌的截击,可以随时发送截击、读取响应等。然而,当ASP(后端)在每个请求上创建一个新会话,从而清除任何设置的会话变量时,问题就出现了 我尝试从服务器读取响应以获取cookie,然后将其作为标题附加到任何后续截击中,但它没有按预期工作。我需要弄清楚为什么我的会话没有持续 INITAndroid 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
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页面将尝试查看用户是否登录到我的检查会话varsession(“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
%>