2012-05-22 9 views
6

Come posso aggiungere i parametri di intestazione nell'applet android?il restlet Android aggiunge il parametro di intestazione non standard

Ho seguente codice:

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 non ha un metodo semplice generico come AddHeader ("Chiave", "Value"). Al contrario, ha una varietà di oggetti e proprietà collegati agli oggetti Richiesta e Risposta, che si usano per specificare ciò che si desidera. Quale intestazione o intestazione specifiche desideri impostare? Ad ogni modo, se si possiede il Restlet in Action eBook, l'appendice E delinea come varie intestazioni si mappano agli oggetti e alle proprietà di Restlet. –

+0

Ma come farò a mettere un'intestazione che non è tra i modelli rastlet? – ademar111190

risposta

4

Vuoi aggiungere personalizzato (ossia non standard) intestazioni? Se è così, provate questo:

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

grazie ma dove ha fatto questa variabile "richiesta"? – ademar111190

+0

Siamo spiacenti, la richiesta proviene da ClientResource.getRequest(). Ho aggiornato il mio snippet di codice sopra. –

+0

Hmm, tieni premuto per un secondo, ottenendo uno strano errore durante il test. –

3

Usa sottostante Codice

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

L'OP ha chiesto come eseguire l'operazione utilizzando il Restlet. –

+0

Ho bisogno di usare ClientResource ... – ademar111190

+0

Ci scusiamo per il dirottamento di questa domanda precedente ma c'è un modo per aggiungere un'intestazione personalizzata nel restlet 1.1 dove non esiste il riferimento all'oggetto risorsa del client? – aspiringCoder

Problemi correlati