簡體   English   中英

在Restlet中添加由ClientResource包裝的請求

[英]Add headers to request wrapped by ClientResource in Restlet

如何將自己的標頭添加到Restlet中ClientResource包裝的請求中? 例如,我已經讀過直接使用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()來添加一些標題?

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

這對應於自定義標頭。

希望它會對你有所幫助。 蒂埃里

如果您使用的是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();

這對我有用,所以我分享了這個。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM