我想在java中复制以下UNIX cURL命令:服务器返回的HTTP响应代码:400网址:HttpURLConnection的错误
卷曲-X POST http://api.nigelsmall.com/xml-cypher -d @测试/文件/ abba.xml
编辑:
更具体地讲,我试图复制在Java中,下列curl命令:
卷曲-X POST http://api.nigelsmall.com/xml-cypher -d “
<?xml version='1.0' encoding='UTF-8' ?><group><member></member></group>
”
到目前为止,我有以下代码:
String urlString = "http://api.nigelsmall.com/xml-cypher";
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/xml");
conn.setDoOutput(true);
conn.setRequestMethod("POST");
String data = "<?xml version='1.0' encoding='UTF-8' ?><group><member></member></group>";
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(data);
out.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
out.close();
rd.close();
}
catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
但产生java.io.IOException:服务器返回的HTTP响应代码:400网址:发生http://api.nigelsmall.com/xml-cypher。任何人都可以找到问题所在?
我能想到的唯一可能是我需要把我的XML放在一个文件中,并将它作为请求发送。但我不知道该怎么做。任何人都可以帮助我吗?提前致谢。
我会设置一个日志代理(请参阅http://stackoverflow.com/questio ns/4939382/logging-post-data-from-request-body)并逐字节比较请求。 – user3159253
发送该XML到该URL会产生一个'400'响应,无论它是否由'curl'或其他发送。我对这个问题是什么感到困惑。你的意思是你想能够读取错误响应体? –
如果我在unix上执行以下命令 curl -X POST http://api.nigelsmall.com/xml-cypher -d“<?xml version ='1.0'encoding ='UTF-8'?> “ 我以”创建“的形式返回响应。如果你去链接“http://api.nigelsmall.com/xml-cypher并点击按钮转换为密码创建语句,你会明白我指的是什么.. –
Ganesh