Java HttpsURLConnection重用

时间:2014-09-11 15:04:04

标签: java php

我想要实现的目标:

我有一段Java代码,用于连接HTTPS中的Web服务器。我想只使用JVM的内置HttpsURLConnection。目的是为经过身份验证的用户保持http连接打开,并继续发送和接收GET / POST请求。经过身份验证后,所有GET / POST请求都将具有与从Web服务器上的php代码中收到的相同的PHP会话ID。 PHP实际上是从我的Java应用程序,进程(数据库处理)和XML输出到我的客户端的请求,以便我更好地处理数据。

问题:

我需要为URL保持相同的HttpsURLConnection(因为所有请求都将转到相同的文档),并在我沿着客户端应用程序移动时不断更改GET中的参数。但由于HTTP一次只能为一个请求提供服务,因此我无法在不重新初始化HttpsURLConnection的情况下重新发送数据。在这种情况下,我的会话ID被更改(因为新的HTTP连接的明显原因),我最终无处可去。下面是我用我的主应用程序制作的代码片段,以澄清我做了什么(请忽略大括号关闭):

    try{
        URL url = new URL("https://localhost:8443/?type=login&username=testu&password=testp");
        HttpsURLConnection conn = (HttpsURLConnection)(url).openConnection();
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestProperty("Connection","Keep-Alive");
        System.out.println("Connecting...");
        conn.connect();
        System.out.println("Response: " + conn.getResponseCode());
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        System.out.println("" + in.readLine());

        url = new URL("https://localhost:8443/?type=login&username=testu1&password=testp1");
        conn = (HttpsURLConnection)url.openConnection();
        conn.setDoInput(true);
        conn.setDoOutput(true);
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
        System.out.println("Connecting..." + conn.getRequestMethod());
        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        System.out.println("Response: " + conn.getResponseCode());
        System.out.println("" + in.readLine());
        System.out.println("" + conn.getHeaderFields());

    } catch (MalformedURLException ex) {
        System.out.println(ex);
    } catch (IOException ex) {
        System.out.println(ex);
    }

}

以上代码的示例输出:

...连接 回复:200 fipfk4pq0ov68bssicug3pv0d3testu 连接... POST 回复:200 hqe9j1kmbdc98f5q1g2vkepb11testu1

查询:

当我更改GET请求参数时,是否可以保持我的HttpsURLConnection仍然指向同一个URL?

0 个答案:

没有答案