0
我想发布一个json到一个URL。我发现下面的代码,它工作正常,我:Java中的HTTP发布Json
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();
}
}
有人可以解释为什么吗?
我不认为冲洗帮助。 http://stackoverflow.com/questions/4844535/why-do-you-have-to-call-urlconnectiongetinputstream-to-be-able-to-write-out-to – Tapani
正如你可以看到在第一个代码我didn不需要os.flush()来正常工作。不,这对第二个代码没有帮助。 – njank
@Tapani,感谢您指出这一点! –