`
kely39
  • 浏览: 48033 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

客户端HTTP发送xml报文,服务端接收报文并返回报文(不带验证)

阅读更多

服务端是一个简单的Servlet,需要配置web.xml

package com.servlet;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


public class MyServlet extends GenericServlet {

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
			
			System.out.println("------调用servlet -----");
			InputStream in = request.getInputStream();
	        SAXReader saxReader = new SAXReader();
	        InputStreamReader strInStream = new InputStreamReader(in, "UTF-8");
	        try {
	            Document document = saxReader.read(strInStream);
	            Element root = document.getRootElement(); //FILELIST
	            System.out.println("1、"+root.getName());
	            Iterator lv = root.elementIterator("FILE");
	            Element el = null;
	            while (lv.hasNext()) {
	                el = (Element) lv.next(); 
	                System.out.println("2、"+el.getName());
	                System.out.println("FILE_NAME="+el.elementText("FILE_STRING"));
	                System.out.println("FILE_NAME="+el.elementText("FILE_NAME"));
	                //逻辑处理
	            }
	            //String file = document.selectSingleNode("/FILE/FILE_STRING").getText();
	            //System.out.println(file);
	        } catch (DocumentException e) {
	            e.printStackTrace();
	        } 
	        
	        Document document = DocumentHelper.createDocument();
	        Element rootElement = document.addElement("RET_INFO");
	        rootElement.addElement("RESULT", "操作成功");
	        DataOutputStream out = new DataOutputStream(response.getOutputStream());
	        XMLWriter writer = new XMLWriter(out);
	        writer.write(document);
	        writer.close();
	        out.flush();

	}

}

 

客户端直接通过http请求的方式请求远程地址的servlet

package com.client;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;


public class TestMyServlet {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Document document = DocumentHelper.createDocument();
        Element rootElement = document.addElement("FILELIST");
        
        Element planElement = rootElement.addElement("FILE");
        planElement.addElement("FILE_STRING", "文件1");
        planElement.addElement("FILE_NAME", "名称1");
        
        Element planElement2 = rootElement.addElement("FILE");
        planElement2.addElement("FILE_STRING", "文件2");
        planElement2.addElement("FILE_NAME", "名称2");
        
        HttpURLConnection http;
        
        try {
            URL urls = new URL("http://localhost:8080/HttpWebServier/");
            http = (HttpURLConnection) urls.openConnection();
            http.setDoOutput(true);
            http.setDoInput(true);
            http.setRequestMethod("POST");
            DataOutputStream out = new DataOutputStream(http.getOutputStream());                
            XMLWriter writer = new XMLWriter(out);
            writer.write(document);
            writer.close();
            out.flush();
            
            //System.out.println( in(http.getInputStream()));
            //接口返回的报文
           
            String resp = "";
            java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(http.getInputStream(), "UTF-8"));
		    String str = breader.readLine();
		    while (str != null) {
			    resp+=str;
			    str= breader.readLine();
		    }
   		 System.out.println("resp="+resp);  
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
	}

}

推荐可以通过Fiddler软件 自己拼接xml报文请求HTTP地址,报文格式如下:

<?xml version="1.0" encoding="UTF-8"?>
    <FILELIST>
      <FILE>
           <FILE_STRING>詹姆斯</FILE_STRING>
            <FILE_NAME>韦德</FILE_NAME>
      </FILE>
      <FILE>
           <FILE_STRING>科比</FILE_STRING>
            <FILE_NAME>鸟人</FILE_NAME>
      </FILE>
    </FILELIST>

  

注:dom4j-1.6.1.jar包见附件

分享到:
评论

相关推荐

    socket服务和客户端测试XML文件接收和发送

    c#写的用于测试socket按固定格式和协议发送xml文件并解析和接收

    Java cxf开发webservice,分别有客户端和服务端

    实际上就是发送和接收消息,实现两个系统间消息的传递 jar包都在lib项目里 具体再解释一下,服务端需要 接口类,实现类,cxf 服务端xml,和一个pojo 客户端也需要接口类文件和pojo,和cxf客户端xml 但是没有接口的...

    webservice接口接收xml,string代码

    webservice接口接收xml,string代码

    CXF建立webservice服务端和客户端

    CXF建立webservice服务端和客户端,发送格式为XML,服务端进行XML解析,并将收到请求报文解析入库,数据库为mysql。

    android客户端向服务端上传数据 post和get两种方式

    android 客户端向服务器端上传数据 用了post和get请求 包括协议的如何拼接怎么向服务端发送xml数据 都已经封装好了 方法 可以直接使用!包含了文件的上传

    Socket测试工具

    1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP; 2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都...

    实现请求回答网络通讯

    实现请求回答网络通讯。...2. 客户端发送登录信息到服务端,服务端返回成功或失败。 3. 客户端登录成功后,发送字符串数据到服务端,服务端返回大写数据。 4. 客户端发送退出信息到服务端,服务端返回成功或失败。

    报文(含8583)模拟仿真测试工具1.7

    本软件可以模拟不同类型的交易报文,可以对交易测试案例进行统一管理,并可以进行简单时间统计和成功率统计。 使用本软件可以减轻传统测试过程中的修改-编译-测试-的循环等待时间,在测试过程中可以根据需要随时...

    报文模拟仿真测试工具2.0

    本软件可以模拟不同类型的交易报文,可以对交易测试案例进行统一管理,并可以进行简单时间统计和成功率统计。 使用本软件可以减轻传统测试过程中的修改-编译-测试-的循环等待时间,在测试过程中可以根据需要随时...

    socket工具源码

    建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP; 2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都...

    C语言实现Linux服务端的记账本程序

    1.相关博文链接:...2.内容描述:参考本代码可熟悉LinuxC作为服务端的socket网络通信、消息队列进程间通信、使用嵌入式sql调用PostgreSQL数据库、使用libxml2构造XML报文等功能。

    IM_client_demo:基于TCP的基于客户端的即时消息传递的示例

    2.TCP和UDP的选择,从使用上面来说,个人更加倾向于TCP,因为协议本身能够保证报文传递的有序性而不需要程序上面对于报文有额外的操作,当然UDP的好处就是快、开销小,这样对于服务器来说可能会好一点 3.报文协议的...

    江东伟业应用轶华软件ERP系统成功案例

    轶华ERP通过XML报文交互,为企业B2B预留了接口,实现业务上无缝衔接;拥有独特的更新方式,只需在服务端控制,即可实现所在客户端的自动更新;数据版本控制,实现服务器和主机间数据差异更新;轶华ERP,能为企业组织...

    实时接口开发项目

    实时接口开发:包含webservice和socket项目开发。WebService开发包含如何向服务端传输xml请求以及对接收报文的解析。

    交易测试模拟器

    金融交易测试模拟器,分为客户端和服务端,支持定长、分隔符、XML、JSON等所有报文类型,支持同步异步通讯,支持GBK/UTF-8编码。能够模拟金融交易系统,收发 报文,提高开发测试效率。本资源为执行代码和用户手册,...

    依然虚拟主机管理系统

    依然虚拟主机管理系统是...主控端及受控端采用.net c#语言编写,客户端为web网站系统,服务端为windows服务(软件只有70K),业务系统-&gt;主控端-&gt;受控端三大系统之间采用标准的XML交换报文,一个主控端可以控制N台服务器.

    xmljava系统源码-itstack-demo-iot-gatewary:itstack-demo-iot-gatewary

    netty网关,支持百万客户端连接,压力测试ing...,并优化了与服务端集群通信,以往轮询往多个服务器发消息,看似消息发送很平均,其实大大影响了效率,本次对平均算法做了优化,本次上传代码添加了很多功能,摒弃了...

Global site tag (gtag.js) - Google Analytics