HTTPPOSTを使用してXMLデータをAPIに送信する際に問題が発生しました。
適切にフォーマットされたXMLを送信すると、次のエラーメッセージが表示されます。
サーバー例外:閉じたストリームにアクセスできません
XMLが適切にフォーマットされていない場合は、を取得しHTTP 500
ます。また、XMLを含む文字列の代わりに空の文字列を送信すると、次のエラーメッセージが返されますEMPTY REQUEST
。
エラーが何であるかについてはあまりわかりませんが、エラーメッセージがXML形式で返されるため、接続は機能します。XMLデータを文字列として送信しているだけです。最終的にEOFなどを送信する必要がある可能性はありますか?そして、Javaコードでそれをどのように行うのですか?問題が何であるかについての他のアイデアはありますか?
APIは.NETで作成されています
XMLデータをPOSTするために使用している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();
....