java 发送 接受 xml请求
二、客户端代码
通过Http Post Xml传递数据,客户端一般是通过URL建立到服务端的连接,向服务端发送xml数据,然后获取服务端的响应并进行解析:
- String xmlString = "<?xml version='1.0' encoding='gb2312'?>"
- + "<Req>"
- + "<EventContentReq>"
- + "<EventID>101</EventID >"
- + "</EventContentReq>"
- + "</Req>";
- byte[] xmlData = xmlString.getBytes();
- String urlStr = "http://124.128.62.164:7001/FetchTaskDataServlet";
- DataInputStream input = null;
- java.io.ByteArrayOutputStream out = null;
- try{
- //获得到位置服务的链接
- URL url = new URL(urlStr);
- URLConnection urlCon = url.openConnection();
- urlCon.setDoOutput(true);
- urlCon.setDoInput(true);
- urlCon.setUseCaches(false);
- //将xml数据发送到位置服务
- urlCon.setRequestProperty("Content-Type", "text/xml");
- urlCon.setRequestProperty("Content-length",String.valueOf(xmlData.length));
- DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream());
- printout.write(xmlData);
- printout.flush();
- printout.close();
- input = new DataInputStream(urlCon.getInputStream());
- byte[] rResult;
- out = new java.io.ByteArrayOutputStream();
- byte[] bufferByte = newbyte[256];
- int l = -1;
- int downloadSize = 0;
- while ((l = input.read(bufferByte)) > -1) {
- downloadSize += l;
- out.write(bufferByte, 0, l);
- out.flush();
- }
- rResult = out.toByteArray();
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document d = db.parse(new ByteArrayInputStream(rResult));
- String TaskAddr = d.getElementsByTagName("TaskAddr").item(0).getFirstChild().getNodeValue();
- System.out.println("TaskAddr:"+TaskAddr);
- }
- catch(Exception e){
- e.printStackTrace();
- }
- finally {
- try {
- out.close();
- input.close();
- }
- catch (Exception ex) {
- }
- }
-
三、服务端代码
服务端一般首先获取客户端发来的xml数据,进行解析,并将响应返回给客户端:
- try{
- //解析对方发来的xml数据,获得EventID节点的值
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document d = db.parse(request.getInputStream());
- String evtid = d.getElementsByTagName("EventID").item(0).getFirstChild().getNodeValue();
- // System.out.println("evtid" + evtid);
- //根据evtid查找任务,生成xml字符串
- UfgovDBUtil dbUtil = new UfgovDBUtil();
- String xmlString = dbUtil.fetchTaskData(evtid);
- // System.out.println("returned xmlString:" + xmlString);
- //把xml字符串写入响应
- byte[] xmlData = xmlString.getBytes();
- response.setContentType("text/xml");
- response.setContentLength(xmlData.length);
- ServletOutputStream os = response.getOutputStream();
- os.write(xmlData);
- os.flush();
- os.close();
- }
- catch(Exception e){
- e.printStackTrace();
- }