restlet2.1 学习笔记(三) 获取简单请求参数

如果是get请求,获取查询参数的方法如下:

@Get
	public String play(){
		Form form = getRequest().getResourceRef().getQueryAsForm() ;	//获取查询参数
		String movie = form.getFirstValue("movie");		//获取key=movie的参数值
		return "电影正在播放,电影名称:" + movie;
	}

然后客户端可以访问http://localhost:8888/?movie=xxx测试。

如果是通过restlet客户端调用。代码如下:

@Test
	public void test01() throws IOException{
		ClientResource client = new ClientResource("http://localhost:8888/?movie=xxx");
		Representation result =  client.get() ;		//调用get方法
		System.out.println(result.getText());  
	}


如果是Post请求。获取请求参数的方式就有些区别了。

服务端可以如下的方式定义Resource方法

	
	@Post
	public String pause(String movie){
		return movie + "暂停...";
	}
	


restlet客户端调用可以用如下方式

	
	@Test
	public void test02() throws IOException{
		ClientResource client = new ClientResource("http://localhost:8080/");  
		Representation result =  client.post("速度与激情6") ;		//调用post方法
		System.out.println(result.getText());  
	}
	


Post请求。可以将查询参数定义为一个方法的参数。 但是get请求不可以。client.get()方法是不能加入参数的。 get请求只能在url上面通过?name=value的方式添加查询参数


注意:

 浏览器发送get请求可以直接在地址栏输入url?name=xx这样如访问服务端的资源

 但是post请求是不行的。例如如下的表单。提交后,服务端返回的内容为: movie=xxx暂停

                                                                                            其实应该返回内容: xxx暂停    才正确

		
		<form action="http://localhost:8080/" method="post" target="_blank">
			<input name="movie" value="xxx" /> 
			<input type="submit" value="Post请求" />   
		</form>    
		


其实Post请求服务端方法的参数获取的是客户端通过post请求发送过来的请求体。跟参数名称没有关系。客户端也不需要知道参数定义的名称,如果客户端发送post请求带有参数,直接在请求体中加入参数值就可以了,并不需要参数名

浏览器发送post请求时查询参数不是直接在url中,而是在请求体中。 而浏览器发送post的请求体的格式就是name1=value1&name2=value2这样的格式。 所以上面用浏览器发送post请求时获取的参数格式不正确





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值