Jersey / JAX-RS客户端在HTTP GET上抛出异常

时间:2014-12-05 03:10:12

标签: rest groovy jersey jax-rs

请注意:即使我在这里使用Groovy,我认为我的例外是关于正确使用Jersey / JAX-RS API。

给出以下代码:

ClientConfig clientConfig = new DefaultClientConfig()
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE)
Client jerseyClient = Client.create(clientConfig)
WebResource webResource = jerseyClient.resource("http://localhost:8080/location/")

Long id = 5L

Address address = webResource.path("address").path(id)
    .accept(MediaType.APPLICATION_JSON)
    .get(Long)

我收到以下异常:

groovy.lang.MissingMethodException: No signature of method: com.sun.jersey.api.client.WebResource.path() is applicable for argument types: (java.lang.Long) values: [5]
Possible solutions: path(java.lang.String), put(), wait(long), put(com.sun.jersey.api.client.GenericType), put(java.lang.Class), put(java.lang.Object)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
    at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.me.myapp.Driver.run(Driver.groovy:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    <rest omitted for brevity>

我试图点击以下REST端点:

GET http://localhost:8080/location/address/{id}

我哪里错了?

1 个答案:

答案 0 :(得分:2)

您使用path调用long方法,但只能使用String。您的idlong,但由于错误消息显示值为1,因此我认为LocationResourcePaths.ADDRESS_PATH也是long,其值为1是这样吗?