6

ClientResourceRestletでラップされたリクエストに独自のヘッダーを追加するにはどうすればよいですか?たとえば、次のものを直接操作するときに使用できることを読みましたClient

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."); }

retrieve()いくつかのヘッダーを追加するために変更するにはどうすればよいですか?

4

3 に答える 3

13

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

したがって、以下に説明するように、リクエストのカスタムヘッダーを指定するために使用できます。

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>");

これはカスタムヘッダーに対応します。

それがあなたを助けることを願っています。ティエリー

于 2012-03-23T08:47:15.100 に答える
3

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();
于 2012-09-18T04:51:42.903 に答える
0

これは私のために働いたので、私はこれを共有しています。

        ClientResource client = new ClientResource(uri);

        Series<Header> headerValue = new Series<>(Header.class);
        Request request = client.getRequest();
        headerValue.add("header name", "header value");
        request.getAttributes().put(HeaderConstants.ATTRIBUTE_HEADERS, headerValue);
于 2018-09-05T09:21:09.103 に答える