日期:2014-05-20  浏览次数:20813 次

怎样在同一个session中多次访问一个HTTPS server
最近写一个集成测试:模拟玩家登陆游戏服务器的全过程,这些过程包括init,play等。
play请求需要init请求返回的transaction id作为postdata的内容。
url是像这样的:
https://www.abc.com:9001/init?playerId=3344 这个会返回一个初始transaction id
https://www.abc.com:9001/play?playerId=3344 这个要transaction id为内容的postdata

当我把init返回的transaction id放到play url的connection的postdata里面发送出去时
服务器认为transaction id和session不匹配。

大概的测试代码如下:
Java code

       //String https_url = "https://localhost:9001/init?playerId=3344";
       String https_url = "https://localhost:9001/play?playerId=3344";
    URL url;
    try {
            url = new URL(https_url);
            HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setRequestMethod("POST");
            OutputStreamWriter output = new OutputStreamWriter(con.getOutputStream());
            String postData=
                "<TransactionId>" 
                                + "13256477107065" 
                                //这个id是https_url为注释掉的那个init URL返回的结果,我直接copy放在这里 
                + "</TransactionId>";
            output.write(postData);
            output.flush();
                                System.out.println("****** Content of the URL ********");            
                BufferedReader br = 
                    new BufferedReader(
                            new InputStreamReader(con.getInputStream()));

                String input;

                while ((input = br.readLine()) != null){
                    System.out.println(input);
                }
                br.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }



服务器返回的结果说session不对。
请问,怎样让这个两个URL在一个session中访问?
thanks in advance!

------解决方案--------------------
你需要一个能模拟浏览器管理Cookie的东西,建议用Apache 的 HttpClient 包,否则自己去实现这种东西会很浪费时间。