日期:2014-05-20  浏览次数:20597 次

求教,怎么用HTTP传送XML?
做一个接口和其他系统交互,对方给的文档如下
XML code

发送内容
<?xml version="1.0" encoding="GB2312"?>
<Request>
  
    <Details>
        <SearchItem Type="aa">
            <Item Type="bb" Code="vv" />
        </SearchItem>
    </Details>
</Request>






XML code

返回的内容
<?xml version="1.0" encoding="GB2312" ?>
<Response>
    <Details>
    <SearchResponse ItemType="bb">
       <ItemDetails>
         <ItemDetail>
          <City Code="111"><![苏州]></City>
          <Item Code="123"><![xxxxx]></Item>
         </ItemDetail>
       </ItemDetails>
   </SearchResponse>
  </Details>
</Response>



请问这种交互是不是用HTTP传送XML文件?这个怎么实现?

是根据用户的输入构造成这种XML在用HTTP请求传送过去,还是构造成一个包含这种格式的string类型再发送?

返回的是个字节流把,是不是要先构造成一个XML文件在进行解析啊?没经验,请做过的大哥说下

------解决方案--------------------
推荐你2种方法。

第一,以纯文本发送,也就是你所说的,把XML以string的方式发送。 (可跨平台,最佳兼容性)
第二,以对象发送,这个就是传送数据结构及内容,用的是SOAP协议。

推荐使用第一种。首先,创建一个端口进行通信。 你要的class都在这个包里 java.net.*。

然后发送XML。 

Java也有自带的XML Parser,可以用来提取和编写XML信息。如果我没记错的话,是javax.xml.*。Parser 分2种,SAX(阅读文件,从头到尾,一次性)和DOM(整个XML文件放入内存阅读,方便,不适宜大型文件)。
------解决方案--------------------
1. 在浏览器端使用AJAX发送(jQuery的):
$.post("url", {xmlContent: xmlString}, function(responseXml) {
console.log(responseXml);
});

2. 服务器端返回xml:
HttpServletResponse response = ....// 这里看J2EE的内容怎么取得,如果是Servlet的可以直接用
response.setContentType("text/xml"); // 指定返回的字符串是xml格式的字符串
response.getWriter().println(xmlString);

上面的两个xmlString是xml格式的字符串
------解决方案--------------------
webservice是可以的。
------解决方案--------------------
用webservice吧,乍看起来符合你的情况
------解决方案--------------------
Webservice,

httpClient

都是可以的
------解决方案--------------------
其实你说的就是我说的第一中。 

用XML Parser/Factory可以构造XML的结构,也可以放入数据。 完后的输出就是一个完整的XML。
然后以文本方式传送。

第二种是对象传送。传送的都是2进制代码。不适合HTTP协议。

------解决方案--------------------
Webservice,

httpClient

都是可以的, 建议用httpClient,选POST方式
------解决方案--------------------
1. webservice,使用json格式返回就成
2. 返回一个字符串或者一个xml文本也可以