做一个接口和其他系统交互,对方给的文档如下发送内容
<?xml version="1.0" encoding="GB2312"?>
<Request>
  
<Details>
<SearchItem Type="aa">
<Item Type="bb" Code="vv" />
</SearchItem>
</Details>
</Request>
返回的内容
<?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文件在进行解析啊?没经验,请做过的大哥说下

解决方案 »

  1.   

    推荐你2种方法。第一,以纯文本发送,也就是你所说的,把XML以string的方式发送。 (可跨平台,最佳兼容性)
    第二,以对象发送,这个就是传送数据结构及内容,用的是SOAP协议。推荐使用第一种。首先,创建一个端口进行通信。 你要的class都在这个包里 java.net.*。然后发送XML。 Java也有自带的XML Parser,可以用来提取和编写XML信息。如果我没记错的话,是javax.xml.*。Parser 分2种,SAX(阅读文件,从头到尾,一次性)和DOM(整个XML文件放入内存阅读,方便,不适宜大型文件)。 
      

  2.   

    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格式的字符串
      

  3.   

    用webservice吧,乍看起来符合你的情况
      

  4.   

    Webservice,httpClient都是可以的
      

  5.   

    webservice可以吗?对方只是给出这个格式,没有给出WEBSERVICE的地址和WSDL文件?如果是用文本方式的话,返回数据很多,那怎么能解析我要的内容啊
      

  6.   


    第二种能不能这样.我是想先构造出XML然后转换成字节流,再用HttpURLConnection发送过去。
      

  7.   

    其实你说的就是我说的第一中。 用XML Parser/Factory可以构造XML的结构,也可以放入数据。 完后的输出就是一个完整的XML。
    然后以文本方式传送。第二种是对象传送。传送的都是2进制代码。不适合HTTP协议。
      

  8.   

    Webservice,httpClient都是可以的, 建议用httpClient,选POST方式
      

  9.   

    1. webservice,使用json格式返回就成
    2. 返回一个字符串或者一个xml文本也可以
      

  10.   

    看了楼上几个大哥的webservice建议,小弟不明白了,对方没给wsdl文件,只是给了一个
    http://xxx/xxxxr.aspx的链接和发送格式返回格式的说明,这怎么使用webservice啊?
      

  11.   

    还没用过!Google应该有的!!