我已经“修复”了这个问题,但是我不明白为什么我的修复有效并且使我感到困扰。 以下代码应该通过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);
}