我在使用 HTTP POST 向 API 发送 XML 数据时遇到问题。
如果我发送格式正确的 XML,我会收到一条错误消息:
服务器异常:无法访问已关闭的流
如果 XML 格式不正确,我会得到HTTP 500
. 如果我只是发送一个空字符串而不是带有 XML 的字符串,我会收到一条错误消息:EMPTY REQUEST
.
我对错误可能是什么没有太多想法,但是连接有效,因为错误消息以 XML 格式返回。我只是将 XML 数据作为字符串发送。最后是否可能要求我发送EOF或其他内容?我如何在我的 Java 代码中做到这一点?关于问题可能是什么的任何其他想法?
API 是在 .NET 中制作的
这是我用来发布 XML 数据的 Java 代码:
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();
....