不带状态代码检查的Java DataOutputStream POST不发布(POST不起作用)

时间:2020-04-11 15:44:49

标签: java http post httpurlconnection dataoutputstream

我已经“修复”了这个问题,但是我不明白为什么我的修复有效并且使我感到困扰。 以下代码应该通过HTTP POST到远程服务器。 我有两行被注释掉了。 注释掉这两行后,它似乎在写入已打开的HTTP连接,但是在远程服务器上什么也没收到。没有错误也没有例外。在两行未注释的情况下,请求响应HTTP代码,该数据似乎已实际发送。 为什么?我最初编写时没有两行内容,假设刷新和关闭连接的行为与刷新和关闭文件连接的行为相同:缓冲区中的内容将被写入。但这似乎并非如此。 是否有比我正在做的更好的刷新和发送POST数据的方法?

    private void post()
            throws IOException {
        System.out.println("Posting xml to url " + postUrl);
        byte[] postData = htmlOutput.getBytes();
        URL post = new URL(postUrl);

        HttpURLConnection conn = (HttpURLConnection) post.openConnection();
        conn.setDoOutput(true);
        conn.setInstanceFollowRedirects(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("charset", "utf-8");
        conn.setRequestProperty("Content-Length", Integer.toString(postData.length));
        conn.setUseCaches(false);
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
        wr.write(postData);
        wr.flush();
        wr.close();

        conn.disconnect();
//        int responseCode = conn.getResponseCode();
//        System.out.println("POST Response Code from server was " + responseCode);

        System.out.println("Finished posting xml to url " + postUrl);
    }

0 个答案:

没有答案