我在使用HTTP POST向API發送XML數據時遇到問題。將XML數據發佈到使用Java的API的問題
如果我發送格式良好的XML,我得到一個錯誤信息:
服務器異常:無法訪問已關閉的流
如果XML的格式不正確,我得到HTTP 500
。如果我只是發送一個空字符串而不是使用XML的字符串,我會收到一條錯誤消息:EMPTY REQUEST
。
對於錯誤可能是什麼,我沒有太多的想法,但連接的工作原理是因爲錯誤消息是以XML格式返回的。我只是將XML數據作爲字符串發送。是否有可能我需要發送EOF或到底?我該如何在Java代碼中做到這一點?關於什麼問題可以是任何其他想法?
的API在.NET做
這裏是Java代碼我使用張貼XML數據:
Authenticator.setDefault(new MyAuthenticator());
String xmlRequestStatus =
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><test><data>32</data></test>";
System.out.println(xmlRequestStatus);
String contentType = "text/xml";
String charset = "ISO-8859-1";
String request = null;
URL url = null;
HttpURLConnection connection = null;
OutputStream output = null;
InputStream response = null;
try {
url = new URL("http://127.0.0.1/test");
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", contentType);
output = connection.getOutputStream();
output.write(request.getBytes("ISO-8859-1"));
if(output != null) try { output.close(); } catch (IOException e) {}
response = connection.getInputStream();
....
謝謝,我補充說,但得到了同樣的問題。我使用這個答案的代碼:http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests/2793153#2793153 – Jonas 2010-06-29 23:53:48