java 发送 接受 xml请求

二、客户端代码

通过Http Post Xml传递数据,客户端一般是通过URL建立到服务端的连接,向服务端发送xml数据,然后获取服务端的响应并进行解析:

Java代码
  1. String xmlString = "<?xml version='1.0' encoding='gb2312'?>"  
  2.                       + "<Req>"  
  3.                       + "<EventContentReq>"  
  4.                       + "<EventID>101</EventID >"  
  5.                       + "</EventContentReq>"  
  6.                       + "</Req>";   
  7.   
  8. byte[] xmlData = xmlString.getBytes();   
  9.   
  10. String urlStr = "http://124.128.62.164:7001/FetchTaskDataServlet";   
  11.   
  12. DataInputStream input = null;   
  13.   
  14. java.io.ByteArrayOutputStream out = null;   
  15.   
  16. try{   
  17.   
  18.        //获得到位置服务的链接   
  19.   
  20.         URL url = new URL(urlStr);   
  21.   
  22.         URLConnection urlCon = url.openConnection();   
  23.   
  24.         urlCon.setDoOutput(true);   
  25.   
  26.         urlCon.setDoInput(true);   
  27.   
  28.         urlCon.setUseCaches(false);   
  29.   
  30.        //将xml数据发送到位置服务   
  31.   
  32.         urlCon.setRequestProperty("Content-Type", "text/xml");   
  33.   
  34.         urlCon.setRequestProperty("Content-length",String.valueOf(xmlData.length));   
  35.   
  36.         DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream());   
  37.   
  38.         printout.write(xmlData);   
  39.   
  40.         printout.flush();   
  41.   
  42.         printout.close();   
  43.   
  44.         input = new DataInputStream(urlCon.getInputStream());   
  45.   
  46.        byte[] rResult;   
  47.   
  48.         out = new java.io.ByteArrayOutputStream();   
  49.   
  50.        byte[] bufferByte = newbyte[256];   
  51.   
  52.        int l = -1;   
  53.   
  54.        int downloadSize = 0;   
  55.   
  56.        while ((l = input.read(bufferByte)) > -1) {   
  57.   
  58.             downloadSize += l;   
  59.   
  60.             out.write(bufferByte, 0, l);   
  61.   
  62.             out.flush();   
  63.   
  64.         }   
  65.   
  66.         rResult = out.toByteArray();   
  67.   
  68.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
  69.   
  70.         DocumentBuilder db = dbf.newDocumentBuilder();   
  71.   
  72.         Document d = db.parse(new ByteArrayInputStream(rResult));   
  73.   
  74.         String TaskAddr = d.getElementsByTagName("TaskAddr").item(0).getFirstChild().getNodeValue();   
  75.   
  76.         System.out.println("TaskAddr:"+TaskAddr);   
  77.   
  78. }   
  79.   
  80. catch(Exception e){   
  81.   
  82.         e.printStackTrace();   
  83.   
  84. }   
  85.   
  86. finally {   
  87.   
  88.        try {   
  89.   
  90.                out.close();   
  91.   
  92.                input.close();   
  93.   
  94.         }   
  95.   
  96.        catch (Exception ex) {   
  97.   
  98.         }   
  99.   

  100. 三、服务端代码

    服务端一般首先获取客户端发来的xml数据,进行解析,并将响应返回给客户端:

    Java代码
    1. try{   
    2.   
    3. //解析对方发来的xml数据,获得EventID节点的值   
    4.   
    5.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
    6.   
    7.         DocumentBuilder db = dbf.newDocumentBuilder();   
    8.   
    9.         Document d = db.parse(request.getInputStream());   
    10.   
    11.         String evtid = d.getElementsByTagName("EventID").item(0).getFirstChild().getNodeValue();   
    12.   
    13. //                    System.out.println("evtid" + evtid);   
    14.   
    15.        //根据evtid查找任务,生成xml字符串   
    16.   
    17.         UfgovDBUtil dbUtil = new UfgovDBUtil();   
    18.   
    19.         String xmlString = dbUtil.fetchTaskData(evtid);   
    20.   
    21. //                    System.out.println("returned xmlString:" + xmlString);   
    22.   
    23.        //把xml字符串写入响应   
    24.   
    25.        byte[] xmlData = xmlString.getBytes();   
    26.   
    27.         response.setContentType("text/xml");   
    28.   
    29.         response.setContentLength(xmlData.length);   
    30.   
    31.         ServletOutputStream os = response.getOutputStream();   
    32.   
    33.         os.write(xmlData);   
    34.   
    35.         os.flush();   
    36.   
    37.         os.close();   
    38.   
    39. }   
    40.   
    41. catch(Exception e){   
    42.   
    43.         e.printStackTrace();   
    44.   

转载于:https://www.cnblogs.com/jh5240/archive/2012/01/08/2316656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019.08.08学习整理

2019.08.08学习整理 文件的高级应用 1.可读、可写 rt: 可读、可写wt: 可写、可读at: 可追加、可读# wt with open(36w.txt, wt, encodingutf-8) as fw:print(fw.readable())print(fw.writable())False True # wt with open(36w.txt, wt, encodingutf-8) as fw:print(fw.readabl…

HTML5新标签

<article>标签定义外部的内容。比如来自一个外部的新闻提供者的一篇新的文章&#xff0c;或者来自 blog 的文本&#xff0c;或者是来自论坛的文本。亦或是来自其他外部源内容。 HTML5:<article></article> HTML4:<div></div><aside>标签定…

WD硬盘 C1门 解决办法

不慎我的硬盘是 西数WDC WD10EARS-003BB1 (931 GB) 每天清早来公司 硬盘吱吱嘎嘎启动甚慢&#xff0c;装Windows2003 系统 软件若干&#xff0c;开机时间据金山卫士 测算为7分钟多&#xff0c;让我无比汗颜&#xff0c;且启动后若干分钟什么也干不了&#xff0c;真正能用的时候…

25款操作系统全面接触 [2]

Sun Solaris Sun Microsystems公司早期的操作系统版本Sun OS是基于BSD的。在1993年&#xff0c;他们与AT&T合作&#xff0c;转向了UNIX System V&#xff0c;并发布了称作Solaris.System V release 4的系统&#xff0c;这是一个UNIX System V和BSD的整合体。Solaris系统主…

Windows 10系统永久关闭Windows Defender Antivirus防病毒程序方法

Win R 键运行 gpedit.msc 找到 计算机配置 -> 管理模板 -> Windows 组件 -> Windows Defender 防病毒程序 右边双击 “关闭Windows Defender防病毒”策略 在打开界面选择 “已启用”选项以禁用Windows Defender Antivirus 如果要重新开通则选择 “未配置”选项 转载于…

Hibernate查询缓存

缓存分类&#xff1a; ◆一级缓存Session级 ◆二级缓存SessionFactory级别 JVM级别 Hibernate查询缓存不固定(根据生命周期 来说 不固定) 生命周期&#xff1a; ◆一级缓存 是和 session 会话一直 产生一直消失 ◆二级缓存 是和 sessionFacotry 一致 Hibernate查询缓存 生命周期…

js数组去重、冒泡排序

数组去重&#xff1a; 方法1、双重for循环---最笨的方法 var arr [1, 2, 3,4 ,5,6, 4, 3, 8, 1]function newArrFn (arr) {// 创建一个新的空数组let newArr []for(let i 0;i<arr.length;i){// 设置一个开关&#xff0c;如果是true&#xff0c;就存进去&#xff0c;不是…

Nuget发布Dll

今天要开始写ViewModel了&#xff0c;写完之后系统里的ViewModel都汇总到我这里&#xff0c;然后由我负责ViewModel的发布跟维护&#xff0c;所以Nuget发布Dll就要熟练啦~ 一&#xff0c;安装工具 1&#xff0c;Nuget Package Manager 2,NuGet.exe 下载地址为&#xff1a;http:…

技巧/诀窍:在ASP.NET中重写URL(转)

技巧/诀窍&#xff1a;在ASP.NET中重写URL 【原文地址】Tip/Trick: Url Rewriting with ASP.NET 【原文发表日期】 Monday, February 26, 2007 9:27 PM 经常有人请我指导应该如何动态地“重写”URL&#xff0c;以在他们的ASP.NETweb应用中发布比较干净的URL端点。这个博客帖…

[导入]竟然支持OpenGL ES!

今天意外的发现&#xff0c;原来S60 3rd原生支持OpenGL ES&#xff0c;这下又给我多了乐趣了~~可是很遗憾&#xff0c;我的E50性能不强劲&#xff0c;还是有独立显卡的N93强悍测试达到442 Frames&#xff0c;而我的E50只有可怜的81 Frames。还好&#xff0c;第三版的性能确实要…

2012 winter training @HIT Day 2 解题报告

今天第二天&#xff0c;主要练习二分和枚举。其实我突然发现&#xff0c;当做题突然卡主的时候&#xff0c;不妨想想今天练习的是什么内容…… 传送门http://acm.hit.edu.cn/hoj/contest/view?id100128 Problem A&#xff1a;Crossed Ladders 此题导致本人郁闷一整天。。从哪说…

如何修改myeclipse中web项目的工作路径或默认路径

如何修改myeclipse中web项目的工作路径或默认路径 博客分类&#xff1a; J2EE开发技术指南安装好myeclipse后&#xff0c;第一次启动myeclipse时&#xff0c;都会弹出会弹出Workspace Launcher对话框&#xff0c;叫你设置myeclipse工作路径。通常我们设置完了后&#xff0c;为了…

FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...

出现问题场景&#xff1a;作为刚接触FreeRTOS实时操作系统的菜鸟&#xff0c;我在练习一个程序功能&#xff1a;按键3按下&#xff0c;将LED闪烁的任务挂起&#xff1b;按键4按下&#xff0c;将LED闪烁的任务恢复到就绪。按键使用外部中断。恢复就绪的语句是xTaskResumeFromISR…

无法连接到远程的SQL SERVER2000

1、先保证ping通 2、在dos下写入telnet ip 1433不会报错 3、用ip连如企业管理器&#xff1a; 企业管理器-->右键SQlserver组-->新建sqlserver注册-->下一步-->写入远程实例名&#xff08;IP,机器名&#xff09;-->下一步-->…

妙趣横生算法 3:寻找相同元素的指针

实例说明 在已知两个从小到大的有序的数表中寻找出现的相同元素在第一个数表中的指针。 运行结果 实例解析 设两个数表的首元素指针分别为pa和pb,两个数表分别有元素an和bn个。另外&#xff0c;引入两个指针变量ca和cb,分别指向两个数表的当前访问元素。由于两个数表从小到大有…

PostgreSQL学习手册(PL/pgSQL过程语言)【转】

原文http://www.cnblogs.com/stephen-liu74/archive/2012/06/06/2312759.html 一、概述&#xff1a; PL/pgSQL函数在第一次被调用时&#xff0c;其函数内的源代码(文本)将被解析为二进制指令树&#xff0c;但是函数内的表达式和SQL命令只有在首次用到它们的时候&#xff0c;…

Nginx 笔记与总结(14)expires 缓存设置

设置缓存&#xff0c;可以提高网站性能。 当网站的部分内容&#xff0c;比如新闻站的图片&#xff0c;一旦发布就不太可能发生更改&#xff0c;此时需要用户在访问一次页面之后&#xff0c;把该页面的图片缓存在用户的浏览器端一段时间&#xff0c;就可以用到 nginx 的 expires…

WP7应用开发笔记(8) IP输入框控件

因为需要在手机上配置IP&#xff0c;我需要一个界面输入IP地址&#xff0c;虽然直接使用TextBox&#xff0c;但是这样不太友好&#xff0c;我希望能够有和Windows网络设置上一样的IP输入框。所以决定写一个自定义控件。 设计控件外观 4个TextBox和3个显示“.”的TextBlock就可以…

C#并发实战Parallel.ForEach使用

前言&#xff1a;最近给客户开发一个伙食费计算系统&#xff0c;大概需要计算2000个人的伙食。需求是按照员工的预定报餐计划对消费记录进行检查&#xff0c;如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则。一开始我的想法比较简单&#xff0c;直接用一…

[MSDN]ASP.NET MVC2(5)MVCRoute和urls

说明&#xff1a;本内容来自微软的webcast&#xff0c;讲师为苏鹏。视频没有书方便(想看哪页就看哪页)&#xff0c;所以抄录要点和老师语录。 内容介绍 - url和routes介绍 - routes匹配url的工作方式 - 使用routes Router对象mvc运转的核心。 预备知…