Java android restlet添加非标准头参数

Java android restlet添加非标准头参数,java,android,parameters,header,restlet,Java,Android,Parameters,Header,Restlet,如何在restlet android中添加头参数 我有以下代码: ClientResource clientResource = null; try { clientResource = new ClientResource(jsonRestHelper.getUrl()); for (Parameter parameter : jsonRestHelper.getParameters()) { //here works perfectly, jsonRestHe

如何在restlet android中添加头参数

我有以下代码:

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) {}
是否要添加自定义(即非标准)标题?如果是,请尝试以下方法:

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"); 
import java.util.concurrent.ConcurrentMap;
导入org.restlet.data.Form;
导入org.restlet.engine.header.header;
导入org.restlet.engine.header.HeaderConstants;
导入org.restlet.resource.ClientResource;
导入org.restlet.util.Series;
...
clientResource=新的clientResource(“http://someurl.com");
ConcurrentMap attrs=clientResource.getRequest().getAttributes();
Series headers=(Series)attrs.get(HeaderConstants.ATTRIBUTE_headers);
if(headers==null){
headers=新系列(Header.class);
上一系列=(系列)
属性putIfAbsent(HeaderConstants.ATTRIBUTE_头,头);
如果(prev!=null){headers=prev;}
}
标题。添加(“myHeaderName”、“myHeaderValue”);
使用下面的代码

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

Restlet没有像addHeader(“Key”、“Value”)这样的简单泛型方法。相反,它将各种对象和属性附加到请求和响应对象,您可以使用这些对象和属性指定所需的内容。要设置哪一个或多个特定标题?顺便说一下,如果你有Restlet in Action电子书,附录E概述了各种头文件如何映射到Restlet对象和属性。但是我将如何放置一个不在模式rastlet中的头文件?OP询问了如何使用Restlet实现这一点。很抱歉劫持了这个老问题,但是有没有办法在Restlet 1.1中添加一个自定义头文件,其中不存在客户端资源obj引用?对不起,请求来自ClientResource.getRequest()。我已经更新了上面的代码片段。嗯,请稍等,测试时出现了一个奇怪的错误。我得到了一个错误:06-04 11:37:10.447:W/System.err(430):通信错误(1001)-处理连接时出错06-04 11:37:10.447:W/System.err(430):在org.restlet.resource.ClientResource.doError(ClientResource.java:627)06-04 11:37:10.447:W/System.err(430):位于org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:236)06-04 11:37:10.447:W/System.err(430):位于$Proxy5.retrieve(本机方法)在某个点更改了一些内容,restlet现在使用序列而不是表单来设置标题。我已经测试了上面的(现在已更正)代码,它对我有效。很抱歉给你带来了困惑。顺便说一句,这段代码是从Thierry Boileau在上写的东西中复制的。@AndyDennie您能分享org.restlet.engine.header.header的库链接吗