【问题标题】:Send POST request from Java server (jetty)从 Java 服务器(码头)发送 POST 请求
【发布时间】:2017-04-18 09:53:46
【问题描述】:

我正在尝试使用参数 userIdtokenstatus 将 POST 请求从 Java 服务器 (Jetty) 发送到另一台服务器 https://example.com/api/test

在 Java 中我调用下面的方法:

sendNotification("https://example.com/api/test", "test1", "test", 200)

我在日志上看到它成功打印:

Sent request to https://example.com/api/test with userId test1 and token test

但是,在 https://example.com/api/test 日志中,我根本没有收到任何请求。

但是,当我尝试以下命令时,我确实收到了完美的请求:

curl -H "Content-Type: application/json" -X POST -d '{"userId": "helloo@apptium.com", "token": "asdfasdf", "status": 200}' https://example.com/api/test

怎么了?

Java 方法:

private void sendNotification(String endpoint, String userId, 
                              String token, int status) throws IOException {
        URL url = new URL(endpoint);
        URLConnection con = url.openConnection();
        HttpURLConnection http = (HttpURLConnection)con;
        http.setRequestMethod("POST");
        http.setDoOutput(true);

        byte[] out = ("{\"userId\":\"" + userId + "\",\"token\":\"" + token + "\",\"status\":" + status + "}").getBytes(StandardCharsets.UTF_8);
        int length = out.length;

        http.setFixedLengthStreamingMode(length);
        http.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        http.connect();
        try {
            log.warn("Sent request to " + endpoint + " with userId " + userId + " and token " + token);
            OutputStream os = http.getOutputStream();
            os.write(out);
        }
        catch(IOException e) {
            log.error(APImessages.ERROR_500);
        }
    }

【问题讨论】:

  • 写操作后是否应该关闭outputStream?

标签: java post jetty httpurlconnection


【解决方案1】:

您必须调用“os.close()”才能完成将请求正文发送到远程服务器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多