应该有一个用于 android 用户登录的 web 服务。
Web 服务的结果还应该包含登录用户的会话 ID(仅当用户登录时)。
并且可以通过在请求标头(或请求属性)中将会话 ID 作为 cookie 传递来跟踪会话。
这是从this answer 引用的Java 代码,用于发出带有请求属性的请求。
try {
URL url = new URL("https://visruthcv.appspot.com/project/listUsers");
URLConnection con = url.openConnection();
HttpURLConnection httpUrlConnection = (HttpURLConnection) con;
httpUrlConnection.setReadTimeout(10000);
httpUrlConnection.setConnectTimeout(15000);
httpUrlConnection.setRequestMethod("POST");
httpUrlConnection.setDoInput(true);
httpUrlConnection.setDoOutput(true);
/*
* for request headers
*/
httpUrlConnection.setRequestProperty("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpUrlConnection.setRequestProperty("Accept-Charset",
"ISO-8859-1,utf-8;q=0.7,*;q=0.3");
httpUrlConnection.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
httpUrlConnection.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
httpUrlConnection.setRequestProperty("Connection", "keep-alive");
httpUrlConnection.setRequestProperty("Cookie", "JSESSIONID=9550495DDC72AAC410B07B6C16908CB5");
/*
* for adding request parameters
*/
Map<String, Object> params = new HashMap<String, Object>();
params.put("username", "Visruth");
params.put("password", "passwd");
OutputStream os = httpUrlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
httpUrlConnection.connect();
// To write to a file, something like this
InputStream is = httpUrlConnection.getInputStream();
FileOutputStream fos = new FileOutputStream("/home/visruth/Desktop/output.txt");
int i = 0;
byte[] b = new byte[1024];
while((i = is.read(b)) != -1) {
fos.write(b);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在上面的代码中,httpUrlConnection.setRequestProperty("Cookie", "JSESSIONID=9550495DDC72AAC410B07B6C16908CB5"); 将会话 ID (9550495DDC72AAC410B07B6C16908CB5) 设置为请求属性中的 cookie。 cookie 值格式为JSESSIONID=9550495DDC72AAC410B07B6C16908CB5,其中9550495DDC72AAC410B07B6C16908CB5 只是在网络中创建的会话ID。通过添加 cookie 使每个请求都可以跟踪会话。