zoukankan      html  css  js  c++  java
  • 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.   

  • 相关阅读:
    (没有意义讨论)二元运算符和自加符的深入理解,小心多个++的陷阱
    c语言复杂变量声明(数组、指针、函数)
    bundle对象传送序列化serialization引用时问题
    android异步任务详解 AsynTask
    servlet使用get方法传送中文参数
    服务器2
    windows server 2003 网站无法访问,重启iis也不行。重启系统解决了。
    得到本周第一天
    JS时间大全
    树状侧边栏
  • 原文地址:https://www.cnblogs.com/jh5240/p/2316656.html
Copyright © 2011-2022 走看看