Flask中seesion的keyerror

这两天学习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

猜你喜欢

转载自blog.csdn.net/dpengwang/article/details/81394407