发布数据

public static void post(String url, byte [] data, String contentType) throws IOException {
    HttpURLConnection connection = null;
    OutputStream out = null;
    InputStream in = null;

    try {
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestProperty("Content-Type", contentType);
        connection.setDoOutput(true);

        out = connection.getOutputStream();
        out.write(data);
        out.close();

        in = connection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        in.close();

    } finally {
        if (connection != null) connection.disconnect();
        if (out != null) out.close();
        if (in != null) in.close();
    }
}

这会将数据 POST 到指定的 URL,然后逐行读取响应。

这个怎么运作

  • 像往常一样,我们从 URL 获得 HttpURLConnection
  • 使用 setRequestProperty 设置内容类型,默认情况下是 application/x-www-form-urlencoded
  • setDoOutput(true) 告诉连接我们将发送数据。
  • 然后我们通过调用 getOutputStream() 获取 OutputStream 并将数据写入其中。完成后别忘了关闭它。
  • 最后我们阅读了服务器响应。