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

前端之家收集整理的这篇文章主要介绍了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",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",minuts);
}
	
输出结果为<?xml version="1.0" encoding="UTF-8" standalone="no"?><movie><name>速度与激情6</name><size>10000000</size><minuts>120</minuts></movie> 原文链接:/xml/300050.html

猜你在找的XML相关文章