restlet2.1学習ノート(3)単純要求パラメータの取得

2037 ワード

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());  
	}

ポストリクエストなら.リクエストパラメータを取得する方法には違いがあります.
サービス側は、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は一時停止してやっと正しいです
		
		

実はPostリクエストサービス側メソッドのパラメータは,クライアントがpostリクエストを介して送信してきたリクエスト体を取得する.パラメータ名には関係ありません.クライアントもパラメータ定義の名前を知る必要はありません.クライアントがpostリクエストを送信するのにパラメータがある場合は、リクエストボディにパラメータ値を直接追加すればいいです.パラメータ名ブラウザがpostリクエストを送信するときにクエリーパラメータがurlではなく、リクエストボディに直接追加される必要はありません.ブラウザがpostを送信するリクエストボディのフォーマットはname 1=value 1&name 2=value 2のようなフォーマットです.ブラウザでpostリクエストを送信したときに取得したパラメータのフォーマットが正しくありません