Java:使用Headers和POST参数打开一个新窗口

时间:2016-12-02 08:43:57

标签: java

我在Tomcat 7上使用java 1.7, 我可以使用以下代码发送POST请求:

private void processSelectProductOnChange(ActionEvent e) {
    URL obj;
    HttpURLConnection con;
    String urlParameters = "";
    String url = "http://myservice.example.com/Service/New";
    String userAgent = request.getHeader("User-Agent");
    int accountId = 5;
    try {
        obj = new URL(url);
        con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", userAgent);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
        con.setRequestProperty("ServiceName", "myServiceName");
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        String json = getJSONObject(accountId);
        wr.writeUTF(json);
        wr.flush();
        wr.close();
        int responseCode = con.getResponseCode();
        BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        System.out.println(response.toString());
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
}

private String getJSONObject(int accountId) throws UnsupportedEncodingException
    {
        JSONObject jobj = new JSONObject();
        jobj.put("AccountId", String.valueOf(accountId));
        jobj.put("ServiceId", String.valueOf(2));
        jobj.put("ExpirationDate", "");
        jobj.put("Description", "");
        return jobj.toString();
    }

现在我没有发送POST请求,而是想从我的网络应用程序打开一个新的浏览器窗口到URL,我该怎么办?

编辑:我忘了在新浏览器标签打开时我想要发出POST请求。

1 个答案:

答案 0 :(得分:0)

据我所知,您无法使用浏览器的地址栏直接发送POST请求。您可能需要使用Postman,Advanced REST客户端等插件。或者您可以使用直接HttpURLConnection或http客户端库。

但是如果您想通过程序打开默认的Web浏览器,可以按照以下步骤操作(对于GET请求)

if(Desktop.isDesktopSupported())
{
  Desktop.getDesktop().browse(new URI(your url here));
}

否则,您可以创建Process并启动浏览器。