restlet2.1 学习笔记(四) 获取、返回XML类型参数

首先加入:org.restlet.ext.xml.jar 

获取XML类型参数

服务端的定义可以用如下方式:

	
	@Post
	public String pause(DomRepresentation param) throws IOException{
		/*
		 * 可以用下面这行代码将xml内容打印出来。但是如果调用下面的getText()方法。 
		 * 就不能继续再解析param对象了。因为getText()方法会将内容从流中将内容读完
         */
		//System.out.println("xml内容:\n" + param.getText() );
		
		//解析xml
		Document doc = param.getDocument() ;
		Element mailEle = doc.getDocumentElement() ;
		Element nameEle = (Element)mailEle.getElementsByTagName("name").item(0);
		Element sizeEle = (Element)mailEle.getElementsByTagName("size").item(0);
		Element minutsEle = (Element)mailEle.getElementsByTagName("minuts").item(0);
		String name  = nameEle.getTextContent() ;
		String size  = sizeEle.getTextContent() ;
		String minuts  = minutsEle.getTextContent() ;
		String result = String.format("name:%s size:%s minuts:%s", name , size , minuts);
		return result  ;
	}  
	



在这里介绍一个RestClientUI工具。可以用该工具直接调用我们的Restlet服务。

自己去google RestClient就有下载


一、使用RestClientUI工具访问客户端

第1步,URL中输入http://localhost:8888/

第2步,在Method选项卡下的单选按钮中选择Post

第3步,在Body选项卡下的下拉框选择String Body,然后在文本框中输入如下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><movie><name>速度与激情6</name><size>10000000</size><minuts>120</minuts></movie>

第四步,提交请求。会看到返回内容:name:速度与激情6 size:10000000 minuts:120



二、使用Restlet的客户端支持开发客户端

	@Test
	public void test02() throws IOException{
		ClientResource client = new ClientResource("http://localhost:8080/");  
		
		//创建请求参数
		DomRepresentation param = new DomRepresentation(MediaType.APPLICATION_XML);
		Document doc = param.getDocument() ;
		//创建节点
		Node movieNode = doc.createElement("movie");	
		Node nameNode = doc.createElement("name");
		Node sizeNode = doc.createElement("size");
		Node minutsNode = doc.createElement("minuts");
		//设置值
		nameNode.setTextContent("速度与激情6");
		sizeNode.setTextContent("10000000");
		minutsNode.setTextContent("120");
		
		movieNode.appendChild(nameNode);
		movieNode.appendChild(sizeNode);
		movieNode.appendChild(minutsNode);
		
		doc.appendChild(movieNode);  
		
		
		Representation result =  client.post(param) ;		//调用post方法
		System.out.println(result.getText());  
	}
	

同样会打印出结果:name:速度与激情6 size:10000000 minuts:120



同时DomRepresentation对象也支持使用Xpath来解析。在服务端多加上一个方法。加上@Put注解。

	
	@Put
	public String put(DomRepresentation param) throws IOException{
		/**
		 * 使用XPath方式来解析XML
		 */
		String name  = param.getText("/movie/name");
		String size  = param.getText("/movie/size");
		String minuts  = param.getText("/movie/minuts");
		String result = String.format("name:%s size:%s minuts:%s", name , size , minuts);
		return result  ;
	}
	

然后在使用RestClientUI测试时只需要将Method选项卡中的单选按钮Post改为Put。然后再测试就能访问服务器端的Put方法了



 返回XML类型参数

在服务端再加入一个getMovie方法,使用@Get注解

	@Get
	public DomRepresentation getMovieInfo() throws IOException{
		//创建请求参数
		DomRepresentation movieInfo = new DomRepresentation(MediaType.APPLICATION_XML);
		Document doc = movieInfo.getDocument() ;
		//创建节点
		Node movieNode = doc.createElement("movie");	
		Node nameNode = doc.createElement("name");
		Node sizeNode = doc.createElement("size");
		Node minutsNode = doc.createElement("minuts");
		//设置值
		nameNode.setTextContent("速度与激情6");  
		sizeNode.setTextContent("10000000");
		minutsNode.setTextContent("120");

		movieNode.appendChild(nameNode);
		movieNode.appendChild(sizeNode);
		movieNode.appendChild(minutsNode);

		doc.appendChild(movieNode);  

		return movieInfo ;
	}

然后就可以用浏览器访问http://localhost:8080/就可以看到返回的xml信息了。

也可以使用RestClient客户端编写代码调用。客户端如下:

	
	@Test
	public void test04() throws IOException{
		ClientResource client = new ClientResource("http://localhost:8888/");  
		Representation result = client.get() ;  
		DomRepresentation dr = new DomRepresentation(result); 
		String name  = dr.getText("/movie/name");
		String size  = dr.getText("/movie/size");
		String minuts  = dr.getText("/movie/minuts");
		System.out.printf("name:%s size:%s minuts:%s", name , size , minuts);
	}
	
输出结果为 <?xml version="1.0" encoding="UTF-8" standalone="no"?><movie><name>速度与激情6</name><size>10000000</size><minuts>120</minuts></movie>


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值