2012-05-22 16 views
6

¿Cómo puedo agregar los parámetros de encabezado en restlet android?android restlet add param header no estándar

He siguiente código:

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 no tiene un método genérico simple como addHeader ("clave", "Valor"). En cambio, tiene una variedad de objetos y propiedades adjuntos a los objetos Solicitud y Respuesta, que usted usa para especificar lo que desea. ¿Qué cabecera o encabezados específicos quieres establecer? Por cierto, si tiene el eBook Restlet in Action, el apéndice E describe cómo varios encabezados se asignan a objetos y propiedades de Restlet. –

+0

¿Pero cómo voy a poner un encabezado que no está entre los patrones de rastlet? – ademar111190

Respuesta

4

¿Quieres añadir a medida (es decir, no estándar) encabezados? Si es así, intente esto:

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

gracias, pero ¿dónde esta variable "solicitar"? – ademar111190

+0

Lo sentimos, la solicitud proviene de ClientResource.getRequest(). He actualizado mi fragmento de código arriba. –

+0

Hmm, espera un segundo, obteniendo un extraño error mientras pruebas esto. –

3

Uso continuación código

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

El OP preguntó cómo hacer esto usando Restlet. –

+0

Necesito usar ClientResource ... – ademar111190

+0

Lo siento por secuestrar esta pregunta anterior, pero ¿hay alguna manera de agregar un encabezado personalizado en la versión 1.1 donde no existe la referencia obj de recursos del cliente? – aspiringCoder