我需要从java独立类发送一个xml请求。我需要发送的xml请求的格式为 -
http://url/query.do?
Request=<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Request initialTime="2011-03-11T16:40Z">
<Query>Java</Query></Request>
所以我已经加入了
String xmlRequest = "url/query.do? Request=<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Request initialQueryTime="2011-03-11T16:40Z"> <Query>Java</Query></Request>"
然后
URL url = new URL(xmlRequest);
URLConnection conn = (URLConnection)url.openConnection();
//conn.connect();
BufferedReader in = new BufferedReader(
new InputStreamReader(
conn.getInputStream()));
但我得到IOException - Server returned HTTP response code: 505 for URL at sun.net.www.protocol.http.HttpURLConnection.getInputStream.
通过浏览器点击此URL会返回xml响应,我需要使用STAX解析该XML。
任何人都可以提供一些如何实现上述目标的想法。
有人可以提供一些示例代码或更正我的代码,以便我能够形成xml请求并解析xml响应。请帮忙。
谢谢,
斯瓦特
答案 0 :(得分:1)
符号'?','&amp;'并且'='在URL中被视为参数和值分隔符,因此请先尝试对XML进行编码。
String xmlRequest = "url/query.do?Request=" + URLEncoder.encode("your xml", "UTF-8");
URL url = new URL(xmlRequest);
...
浏览器为每个请求执行URL编码。这就是它起作用的原因。
答案 1 :(得分:0)
答案 2 :(得分:-2)
建议使用apache HTTP客户端库(它有许多可以在你的情况下使用的功能)。
你也可以使用Apache Tika api。
请考虑发布的网址的大小,请参阅here ..
使用apache HTTP客户端可以选择使用POST方法而不是GET方法,这样就可以在请求中发布一个相当大的文件。