我明明已经将获得的JsessionID添加到cookie头里面了,为什么服务端还提醒我"You must enable session cookies to use this secure system"? 是我哪里忽略了吗。下面贴上代码
                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder()
                            .addHeader("Connection", "keep-alive")
                            .url("https://ebridge.xjtlu.edu.cn/urd/sits.urd/run/siw_lgn")
                            .build();                    Response response = client.newCall(request).execute();
                    String result = response.body().string();
                    Headers headers = response.headers();
                    List<String> cookies = headers.values("Set-Cookie");
                    String session = cookies.get(0);
                    session = session.substring(0, session.indexOf(";"));                    Document parse = Jsoup.parse(result);
                    DUMMY = parse.select("input[name=%.DUMMY.MENSYS.1]").get(0).attr("value");
                    RUNTIME = parse.select("input[name=RUNTIME.DUMMY.MENSYS.1]").get(0).attr("value");
                    OkHttpClient client2 = new OkHttpClient();
                    RequestBody formBody = new FormBody.Builder()
                            .add("SCREEN_WIDTH.DUMMY.MENSYS.1", "")
                            .add("SCREEN_HEIGHT.DUMMY.MENSYS.1", "")
                            .add("%.DUMMY.MENSYS.1", DUMMY)
                            .add("RUNTIME.DUMMY.MENSYS.1", RUNTIME)
                            .add("PARS.DUMMY.MENSYS.1", "")
                            .add("MUA_CODE.DUMMY.MENSYS.1", account)
                            .add("PASSWORD.DUMMY.MENSYS.1", password)
                            .add("BP101.DUMMY_B.MENSYS.1", "Log in")
                            .build();                    Request login = new Request.Builder()
                            .addHeader("cookies", session)
                            .addHeader("cookies", "EVISIONID_TEST=COOKIE_TEST")
                            .addHeader("cookies", "EVISIONLOGINHTV=")
                            .addHeader("cookies", "EVISIONLOGINLANG=")
                            .url("https://ebridge.xjtlu.edu.cn/urd/sits.urd/run/SIW_LGN")
                            .post(formBody)
                            .build();                    Response execute = client2.newCall(login).execute();

解决方案 »

  1.   

    我在这里详细描述一下问题。网站的Cache Control是no-store, no-cache, must-revalidate的,有两个随机码%.DUMMY.MENSYS.1和RUNTIME.DUMMY.MENSYS.1我都获取到了,我也获取到了服务器发来的JsessionCode。现在的问题是我怎么样尝试登录服务器都提示我需要启用session 和 cookie。是我哪里没注意吗
      

  2.   

    .addHeader("cookies", session)
                                .addHeader("cookies", "EVISIONID_TEST=COOKIE_TEST")
                                .addHeader("cookies", "EVISIONLOGINHTV=")
                                .addHeader("cookies", "EVISIONLOGINLANG=")    这个写法是不是只有最有一个有效?其他的都不覆盖了。抓一下包看看