`
kely39
  • 浏览: 49308 次
  • 性别: 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包见附件

分享到:
评论

相关推荐

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许开发者发送HTTP请求并接收响应,支持各种HTTP方法,如GET、POST等。在本场景中,我们关注的是POST方法,它是HTTP协议中用于传输大量数据的一种...

    Socket服务端客户端以tcp/ip协议发送接收报文

    `ServerThread`类负责读取客户端发送的数据,打印出来,并将接收到的消息原样返回给客户端。 接着,我们看客户端的实现。客户端通过`Socket`类与服务端建立连接,并发送数据。以下是一个简单的客户端代码示例: ``...

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

    6. **测试**:在“socketTest”这个项目中,很可能包含了服务端和客户端的测试代码,用于验证XML文件的发送和接收是否正常。测试可能包括模拟不同网络条件下的发送、接收,以及异常情况的处理。 总的来说,这个项目...

    XML报文测试模拟器

    2. **发送与接收**:模拟器能够模拟发送XML报文到指定的目标地址,并接收服务器的响应,帮助开发者验证报文格式的正确性和服务端的处理能力。 3. **报文预览**:提供XML报文的预览功能,便于检查XML的语法结构和...

    webservice接口接收xml,string代码

    在提供的代码片段中,可以看到主要分为两个部分:发送XML数据与接收XML数据。 ##### 1. 发送XML数据 ```csharp DataTable data = new DataTable("Project"); data.Columns.Add("Name"); data.Columns.Add(...

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

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

    根据wsdl使用gsoap生成的服务器和客户端

    gSOAP提供了`soapcpp2`生成的测试客户端和服务器,可用于快速验证代码的正确性。同时,可以使用gSOAP的`soap_serve`和`soap_call`函数进行调试。 7. **最佳实践**: - 保持WSDL文件清晰简洁,避免过于复杂的类型...

    8583报文完整项目demo包括服务端网页调用

    6. **ServerDemo**: 服务端的演示代码,可能是一个Web应用程序,接收来自客户端(网页)的调用,处理8583报文,并返回相应的响应。这展示了服务端如何集成8583处理逻辑。 7. **doc**: 文档目录,可能包含了项目的...

    webservice开发方式,报文修改

    以上代码演示了如何手工构建SOAP请求报文,并通过`HttpURLConnection`发送到Web Service接口。这种方式灵活,可以处理各种复杂的报文结构,包括那些AXIS等框架难以处理的SOAP Header。 在处理与第三方服务的报文...

    基于spring+cxf实现用户文件传输的webservice

    2. 用户可以查询已经发送的报文历史信息列表,包括报文名称、报文大小和发送时间。 3. 由于不是开放服务,所以还需要对用户身份进行基本认证。 服务构建 为了实现上述功能,我们需要定义要提供的服务接口。首先,...

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

    通过设置URL并添加查询参数,然后读取响应来获取服务器返回的数据。例如,使用`HttpURLConnection`: ```java URL url = new URL("http://example.com?param1=value1&param2=value2"); HttpURLConnection conn = ...

    http报文解析

    ### HTTP报文解析 #### 一、概述 HTTP(HyperText Transfer Protocol)报文是一种面向文本的数据包...通过对HTTP报文的深入分析,可以帮助开发者更有效地处理客户端和服务端之间的交互,提高应用程序的性能和安全性。

    8583报文及各域的详解

    8583报文是ISO8583国际标准的报文格式,由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。8583报文的前面一段为位图,用来确定包的字段域组成情况。位图是8583包的灵魂,它是打包解包确定字段域的关键...

    用go语言实现的GB28181的服务端和客户端.zip

    GB28181是中国国家公共安全视频监控网络系统联网通信协议标准,它定义了服务端和客户端之间的数据传输、控制、管理和互操作规范。在这个项目中,开发者使用了Go语言来实现GB28181协议的两端——服务端和客户端。Go...

    Socket测试工具

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

    实现请求回答网络通讯

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

    报文模拟仿真测试工具2.0

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

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

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

    axis1的示例和webservice开发手册

    这通常涉及使用HTTP协议的POST请求,将文件作为请求体的一部分发送,然后在服务器端接收并处理文件。在客户端,可以使用Axis1提供的API来构造这样的请求;在服务端,可以编写处理文件的业务逻辑。 2. **将传递的...

    测试报文.txt

    请求来源,可以帮助识别发起请求的客户端或服务端。 #### 9. **** 请求时间戳,通常用于时间戳校验、统计分析等场景。 #### 10. **** 订单数量,可能涉及批量处理或多订单操作。 ### 四、HTTP请求路径解析 #### ...

Global site tag (gtag.js) - Google Analytics