【问题标题】:HTTP Post Json in Java [duplicate]Java中的HTTP Post Json [重复]
【发布时间】:2015-07-11 02:27:10
【问题描述】:

我想将 json 发布到 URL。我找到了以下代码,对我来说很好用:

public void post(URL url, String json) {
        try {
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");

            OutputStream os = conn.getOutputStream();
            os.write(json.getBytes());
            os.close();

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            conn.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

但我只想发帖,不关心响应。因此,当我尝试删除第二部分(使用 BufferedReader 读取)时,它不再起作用了:

public void post(URL url, String json) {
        try {
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");

            OutputStream os = conn.getOutputStream();
            os.write(json.getBytes());
            os.close();     
            conn.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

谁能解释一下原因?

【问题讨论】:

    标签: java json post bufferedreader httpurlconnection


    【解决方案1】:

    Try Flushing out the Stream

    public void flush()
               throws IOException
    

    刷新此输出流并强制任何缓冲的输出字节 写出来。 flush 的一般约定是调用它是 指示,如果先前写入的任何字节已被缓冲 输出流的执行,这样的字节应该立即 写到他们的预定目的地。

    在关闭 OutputStream 之前,将其刷新

    os.flush(); --> This will flush your stream
    os.close();
    

    【讨论】:

    • 我认为冲洗没有帮助。 stackoverflow.com/questions/4844535/…
    • 正如您在第一个代码中看到的那样,我不需要 os.flush() 才能正常工作。不,它对第二个代码没有帮助。
    • @Tapani,感谢您指出这一点!!
    猜你喜欢
    • 2018-08-09
    • 2021-01-02
    • 2011-11-21
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多