java.lang.IllegalArgumentException: This method supports only the Types Cookie, CacheControl, Entity

来源:互联网 发布:linux daemon用户权限 编辑:程序博客网 时间:2024/05/22 00:19

问题:jersey  Post方法添加head异常

环境:服务端 restlet 实现

     client发送方法post  get  采用 jersey,包采用 jersey-bundle 1.9  

     为什么不用 reslet 实现发送,经过测试 reslet post  方法效率很低 ,至于具体原因没深究

  import

import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;import com.sun.jersey.api.client.config.ClientConfig;import com.sun.jersey.api.client.config.DefaultClientConfig;

  post 方法如下:

        private static Client client = null;ClientConfig cc = new DefaultClientConfig();client = Client.create(cc);client.setConnectTimeout(10000);client.setReadTimeout(10000);}public static String postRestAPI(String url) {WebResource service = client.resource(url);try {String response = service.type(MediaType.APPLICATION_JSON).header("ClientID", Constant.CLIENT_ID).header("SignID", Constant.SIGN_ID).post(String.class).toString();log.info("rest:" + response);return response;} catch (Exception e) {e.printStackTrace();log.info("rest request error:" + e);return Constant.ERROR;}}

报异常:java.lang.IllegalArgumentException: This method supports only the Types Cookie, CacheControl, Entity

具体如下:

com.sun.jersey.api.client.ClientHandlerException: java.lang.IllegalArgumentException: This method supports only the Types Cookie, CacheControl, EntityTag, NewCookie and MediaTypeat com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:128)at com.sun.jersey.api.client.Client.handle(Client.java:435)at com.sun.jersey.api.client.WebResource.handle(WebResource.java:557)at com.sun.jersey.api.client.WebResource.access$300(WebResource.java:69)at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:491)at com.teraee.tcat.util.RestClient.postRestAPI(RestClient.java:82)at com.teraee.tcat.util.Register.tcatRegister(Register.java:68)at com.teraee.tcat.util.Register.run(Register.java:37)Caused by: java.lang.IllegalArgumentException: This method supports only the Types Cookie, CacheControl, EntityTag, NewCookie and MediaTypeat org.restlet.ext.jaxrs.internal.spi.RuntimeDelegateImpl.createHeaderDelegate(RuntimeDelegateImpl.java:101)at com.sun.jersey.api.client.ClientRequest.getHeaderValue(ClientRequest.java:213)at com.sun.jersey.api.client.TerminatingClientHandler.headerValueToString(TerminatingClientHandler.java:238)at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.writeOutBoundHeaders(URLConnectionClientHandler.java:227)at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:172)at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:126)... 7 more
原因分析:

查看报错日志发现

 org.restlet.ext.jaxrs.internal.spi.RuntimeDelegateImpl.createHeaderDelegate

restlet.的jar包报错,但是我用的是 jersey client 发送的, 所以判断是jar包冲突,也就是restlet   Restlet jax-rs impl

createHeaderDelegate
相关的实现  替代了 我想要的  jersey的正确实现

解决办法:

将 jersey相关jar包 放在restlet jar包的前面


0 0
原创粉丝点击