2012-03-22 10 views
6

Kendi başlığımı, Restlet? In ClientResource tarafından sarılmış bir isteğe nasıl ekleyebilirim?Restlet'te istemci Kaynak tarafından sarılmış istemek için üstbilgi ekleme

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

Ancak, temelde onların eğitimde sağlanan kodu takip ediyorum ve ben erişilebilir olmalıdır ClientResource hangi üyesinin bilmiyorum: Mesela ben Client doğrudan çalışırken aşağıdakileri kullanabileceği okudum başlıklarını ayarlamak için:

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

ne bazı başlıkları eklemek için retrieve() değiştirmek için ne yapabilirim?

cevap

13

ClientResource yönteminin bir getRequestAttributes yöntemi vardır, bu yöntem şu şekildedir: getRequest().getAttributes().

Yani aşağıda açıklandığı şekilde, taleple ilgili özel başlıklar belirtmek için bunu kullanabilirsiniz:

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

başlıklarının çoğu varsayılan olarak Restlet tarafından yönetilir unutmayın. Hangi üstbilgileri desteklediğini görmek için, HeaderUtils sınıfına bakın: https://github.com/restlet/restlet-framework-java/blob/master/modules/org.restlet/src/org/restlet/engine/header/HeaderUtils.java.

Düzenlenmiş Restlet son sürümlerini (2.3) ile

bir metot getHeaders eklendi

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

Bu özel başlıkları karşılık gelir.

Size yardımcı olacağını umuyorum. Thierry

+0

ben bu kodla takip hatası alıyorum ediyorum : Nesneden Seri'ye dönüştürülemiyor

ademar111190

+4

Sürüm 2.1.2: Serisi

başlıklarıyla = (Series
) res.getRequestAttributes(). get ("org.restlet.http.headers"); if (headers == null) { başlıklar = yeni Series
(Header.class); } headers.add ("kullanıcı", "abcd1"); headers.add ("password", "welcome"); –

+0

@ thierry-templier bu sohbete enjekte ettiğimiz için özür dilerim ancak bu http://stackoverflow.com/questions/35383763/how-to-get-mediatype-from-request adresinden bana yardımcı olabilir misiniz? – xybrek

2

Eğer Restlet 2.0.x (en son kararlı sürüm) kullanıyorsanız, bunu yapmak gerekir: Tür uyumsuzluğu:

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(); 
İlgili konular