需要从java发送xml请求并解析xml响应

时间:2011-07-05 06:09:32

标签: java xml request response

我需要从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响应。请帮忙。

谢谢,

斯瓦特

3 个答案:

答案 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)

此问题与this one有关。

错误代码505表示以下内容:

服务器不支持或拒绝支持请求消息中使用的HTTP协议版本。服务器使用与客户端相同的主要版本指示它无法或不愿意完成请求。

答案 2 :(得分:-2)

建议使用apache HTTP客户端库(它有许多可以在你的情况下使用的功能)。

你也可以使用Apache Tika api。

请考虑发布的网址的大小,请参阅here ..

使用apache HTTP客户端可以选择使用POST方法而不是GET方法,这样就可以在请求中发布一个相当大的文件。