这两天学习Flask搭建服务器,今天利用okhttp3 写了简单的客户端请求,想完成一个登陆系统,也就是简单的用户登陆—>用户请求信息—>用户登出,登陆时将用户名保存再flask的session中,如下形式
session["username"] = username
登陆完成后,用另一个方法get信息,需要用到之前保存的username
但是程序运行的时候flask端显示
keyerror username
经检查是get信息的程序运行时,无法从通过 session["username"]
的方法来获取之前再session中保存的username,这是什么问题了,经过反复检查终于发现了原因,登陆程序和请求信息的代码如下
login
public static String login(String url) throws IOException {
OkHttpClient client = new OkHttpClient();
FormBody.Builder params=new FormBody.Builder();
params.add("username","user1");
params.add("password","passworduser1");
Request request = new Request.Builder()
.url(url)
.addHeader("a","sessionid")
.post(params.build())
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
getlabel
public static String getlabel(String url) throws IOException{
FormBody.Builder params=new FormBody.Builder();
params.add("date","date1");
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.addHeader("a","sessionid")
.post(params.build())
.build();
String response = client.newCall(request).execute().body().string();
return response;
}
执行部分
public static void main(String args[]) throws IOException {
String urllogin = "http://127.0.0.1:5002/login/";
String urllabel = "http://127.0.0.1:5002/label/";
System.out.println(login(urllogin));
System.out.println(getlabel(urllabel));
}
}
虽然两个方法时紧挨着执行的,但是这两个方法中都new 了一个client的,所以在服务器端使用的时两个不同的session