`

java发送Http请求传送xml数据,并返回xml数据

    博客分类:
  • XML
阅读更多
客户端发送请求、以及处理服务端响应代码为:
//发送xml请求
        URL url = new URL("http://127.0.0.1:8080/Test/sendXmlAndReturnXml.do");
        String xml = "<aaa><ddd>cccccc客户端请求的xml数据cccccccc</ddd></aaa>";
        URLConnection conn = null;
        conn = url.openConnection();
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestProperty("Content-Length", Integer.toString(xml.length()));
        conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
        OutputStream ops = conn.getOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(ops, "GBK");
        osw.write(xml);
        osw.flush();
        osw.close();

        //发送成功后,获取服务器的响应xml串:
        StringBuffer sb = new StringBuffer();
        String line = "";
        InputStream is = conn.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));//三层包装
        while ((line = br.readLine()) != null) {
            sb.append(line+ "\r\n");
        }
        System.out.println(sb.toString());

服务端代码为:
@Controller
public class TestXMLAction {
    @RequestMapping("/sendXmlAndReturnXml.do")
    public void sendXmlAndReturnXml(HttpServletRequest request, HttpServletResponse response) throws IOException{
        //获取请求的xml
        System.out.println("请求的xml数据为:\n" + getXmlFromRequest(request));
        //服务端响应xml数据
        response.getWriter().print("<aaa><ddd>bbbccc服务端返回响应xml数据,在客户端可以获取到</ddd></aaa>");
    }
    
    //从HTTP请求中取出请求的XML
    private String getXmlFromRequest(HttpServletRequest request)throws IOException {
        String reqXml = "";
        reqXml = request.getQueryString(); //GET请求
        if (StringUtils.isBlank(reqXml)) { //POST请求
            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            br.close();
            reqXml = sb.toString();
        }
        return reqXml;
    }
}
分享到:
评论

相关推荐

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    这是一个质的区别:网页将数据和显示混在一起,而XML则将数据和显示分开来。 我们看上面的例子,在myfile.htm中,我们只关心页面的显示方式,我们可以设计不同的界面,用不同的方式来排版页面,但数据是储存在...

    JAVA上百实例源码以及开源项目源代码

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    java源码包---java 源码 大量 实例

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    JAVA上百实例源码以及开源项目

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    XMLHttp中文参考手册

    XmlHttp是一套可以在java script、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。来自MSDN的解释:XmlHttp提供...

    java源码包4

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  ...

    java源码包3

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  ...

    深入Java Servlet网络编程

    2. 3 处理表单和返回数据的实例 2. 4 错误处理和日志记录 2. 4. 1 Java中的异常处理机制 2. 4. 2 在Java Servlet中处理异常 2. 4. 3 向浏览器发送标准的HTTP错误 2. 4. 4 服务器端日志记录 2. 5 Servlet在n-...

    java源码包2

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...

    java 面试题 总结

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...

    超级有影响力霸气的Java面试题大全文档

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN的区别?  Java Bean 是可...

    Android实验七.doc

    3、 业务逻辑代码与布局文件分别是MainActivity.java 、DetailActivity.java、TQYBInfo.java、XmlInfoUtil.java和activity_main.xml、a ctivity_detail.xml、listview_detail.xml。 4、 在 AndroidManifest.xml 中...

    XMLHTTPRequest对象详解

    XmlHttpRequest是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。

    JSP程序设计课件包含Hibernate,Struts的介绍

    14. ActionServlet职责是把HTTP消息打包起来并传送到框架中合适的处理器。 15. Struts程序启动时,首先从配置文件struts-config.xml文件中读取相关信息,根据这些信息,控制器可以知道把视图中的请求转发给那个业务...

    struts2.0.jar

    所有请求通过一组拦截器传送,之后再发送到Action类。Action类被执行后,请求按照相反顺序再次通过拦截器传送。 · 支持Ajax: 为了创建使用Ajax的动态Web应用,Struts 2提供了Ajax主题,从而大大改进了交互应用。...

    struts2.4+spring3.1+hibernate4.1的SSH框架

    而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。  采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样...

Global site tag (gtag.js) - Google Analytics