2012-05-22 31 views
6

如何在restlet android中添加標題參數?android restlet添加非標準標題參數

我有以下代碼:

ClientResource clientResource = null; 
try { 
    clientResource = new ClientResource(jsonRestHelper.getUrl()); 
    for (Parameter parameter : jsonRestHelper.getParameters()) { 
     //here works perfectly, jsonRestHelper is a helper class 
     clientResource.addQueryParameter(parameter); 
    } 
    //here I wanna add headers param example 
    //addHeader("Key","Value"); 
} catch (Exception e) {} 
+0

的Restlet沒有的addHeader一樣( 「鍵」, 「值」)一個簡單的泛型方法。相反,它具有附加到Request和Response對象的各種對象和屬性,您可以使用它們來指定所需內容。你想要設置哪個特定的標題或標題?順便說一下,如果您有Restlet in Action電子書,附錄E概述了各種標題如何映射到Restlet對象和屬性。 –

+0

但是,如何將一個不在模式之間的標題放入? – ademar111190

回答

4

你想添加自定義(即非標)頭?如果是的話,試試這個:

import java.util.concurrent.ConcurrentMap; 
import org.restlet.data.Form; 
import org.restlet.engine.header.Header; 
import org.restlet.engine.header.HeaderConstants; 
import org.restlet.resource.ClientResource; 
import org.restlet.util.Series; 


... 

clientResource = new ClientResource("http://someurl.com"); 
ConcurrentMap<String, Object> attrs = clientResource.getRequest().getAttributes(); 
Series<Header> headers = (Series<Header>) attrs.get(HeaderConstants.ATTRIBUTE_HEADERS); 
if (headers == null) { 
    headers = new Series<Header>(Header.class); 
    Series<Header> prev = (Series<Header>) 
     attrs.putIfAbsent(HeaderConstants.ATTRIBUTE_HEADERS, headers); 
    if (prev != null) { headers = prev; } 
} 
headers.add("myHeaderName", "myHeaderValue"); 
+0

謝謝,但這個變量「請求」在哪裏? – ademar111190

+0

對不起,請求來自ClientResource.getRequest()。我已經更新了我上面的代碼片段。 –

+0

嗯,堅持一秒,在測試時出現奇怪的錯誤。 –

3

使用下面的代碼

HttpClient client = new DefaultHttpClient(); 
String getURL = "rest url"; 
HttpGet get = new HttpGet(getURL); 
get.setParams(HttpParams parmams) 
get.setHeader("Key","valye"); // Request Header 
    try { 
     HttpResponse responseGet = client.execute(get); 
    } 
    catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
} 
+0

OP詢問如何使用Restlet進行此操作。 –

+0

我需要使用ClientResource ... – ademar111190

+0

對不起劫持這個舊的問題,但有沒有辦法在restlet 1.1中添加自定義標題,其中客戶端資源obj引用不存在? – aspiringCoder