У меня проблема с отправкой XML-данных через HTTP POST в 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();
....