2012-03-22 6 views
6

RestletのClientResourceでラップされたリクエストに自分のヘッダーを追加するにはどうすればよいですか?例えば、私はClientを直接操作するときは、以下を使用できることを読んだ:RestletのClientResourceでラップされたリクエストのヘッダーを追加

Form headers = (Form) request.getAttributes().get(HeaderConstants.ATTRIBUTE_HEADERS); 
if (headers == null) { 
headers = new Form(); 
request.getAttributes().put("org.restlet.http.headers", responseHeaders); 
} 
headers.add("X-Some-Header", "the value"); 

しかし、私は基本的に彼らのチュートリアルで提供されているコードを、次のと私がアクセスすべきClientResourceのどのメンバーがわかりませんヘッダーを設定するには

ClientResource clientResource = new ClientResource("http://webserviceurl"); 

MyClassResource classResource = clientResource.wrap(classResource.class); 

MyClass class; 

try { class = resource.retrieve(); } catch (Exception e) { System.out.println("fail."); } 

いくつかのヘッダーを追加するにはどうすればよいですか?

答えて

13

ClientResourceメソッドには、getRequest().getAttributes()のショートカットであるgetRequestAttributesメソッドがあります。

だから、以下に述べるように、要求のためにあなたのカスタムヘッダーを指定するためにそれを使用することができます。

ClientResource cr = new ClientResource("..."); 
Series<Header> headers = cr.getRequestAttributes().get(
           "org.restlet.http.headers"); 
headers.set("<header-name>", "<header-value>"); 

は、ヘッダーのほとんどは、デフォルトでのRestletによって管理されていることに注意してください。サポートされているヘッダーを確認するには、HeaderUtilsクラス(https://github.com/restlet/restlet-framework-java/blob/master/modules/org.restlet/src/org/restlet/engine/header/HeaderUtils.java)を参照してください。

編集

のRestletの最新バージョン(2.3)を用いて、方法getHeadersを添加した:

ClientResource cr = new ClientResource("..."); 
Series<Header> headers = cr.getHeaders(); 
headers.set("<header-name>", "<header-value>"); 

これは、カスタムヘッダに相当します。

ご希望の場合はお手数ですが、 ティエリー

+0

私はこのコードでフォローエラーを取得: 型の不一致を:オブジェクトからシリーズに変換できません

ademar111190

+4

バージョン2.1.2の場合: シリーズ

ヘッダー=(シリーズ
)res.getRequestAttributes()。get( "org.restlet.http.headers"); if(headers == null){ headers = new Series
(Header.class); } headers.add( "user"、 "abcd1"); headers.add( "password"、 "welcome"); –

+0

@ thierry-templierさんはこの会話にご参加いただきまして申し訳ありませんが、このお手伝いができますhttp://stackoverflow.com/questions/35383763/how-to-get-mediatype-from-request – xybrek

2

あなたがのRestletの2.0.x(最新の安定版)を使用している場合は、あなたがこれを実行する必要があります。

ClientResource resource = new ClientResource(yourUrl); 
Form headers = (Form)resource.getRequestAttributes().get("org.restlet.http.headers"); 
if (headers == null) { 
    headers = new Form(); 
    resource.getRequestAttributes().put("org.restlet.http.headers", headers); 
} 
headers.add("yourHeaderName", yourHeaderValue); 
resource.get(); 
Response response = resource.getResponse(); 
String text = response.getEntity().getText(); 
String status = response.getStatus().toString(); 
関連する問題