【发布时间】:2013-03-07 23:53:12
【问题描述】:
我已经尝试了两个小时来尝试从生成的 REST Web 服务获取返回值,但 Netbeans 但无论我尝试什么都会引发错误。 netbeans 生成的代码是
@GET
@Override
@Produces({"application/xml", "application/json"})
public List<Person> findAll() {
return super.findAll();
}
当我创建一个客户端时,我会得到这个生成的代码
public <T> T findAll_XML(Class<T> responseType) throws UniformInterfaceException {
WebResource resource = webResource;
return resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML).get(responseType);
}
我尝试了多种方法来调用它,经过大量冲浪后,我认为这应该可以解决问题,但事实并非如此。
public static void main(String[] args) {
PersonRESTClient prc = new PersonRESTClient();
Person person = prc.find_XML(Person.class, "100");
System.out.println(person.getFirstname() + " " + person.getSecondname()); //THIS WORKS!!
GenericType<List<Person>> gType = new GenericType<List<Person>>(){};
List<Person> persons = (List<Person>) prc.findAll_XML(gType.getClass());
for (Person p : persons) {
System.out.println(person.getFirstname() + " " + person.getSecondname());
}
}
我得到的错误是
2013 年 3 月 7 日下午 2:23:31 com.sun.jersey.api.client.ClientResponse getEntity SEVERE:Java 类的消息体阅读器 restexample2client.RestExample2Client$1 和 Java 类型类 restexample2client.RestExample2Client$1 和 MIME 媒体类型 未找到应用程序/xml 2013 年 3 月 7 日下午 2:23:31 com.sun.jersey.api.client.ClientResponse getEntity SEVERE: 与 MIME 媒体类型兼容的注册消息正文阅读器 是:应用程序/xml ->
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$App / -> com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy线程“main”中的异常 com.sun.jersey.api.client.ClientHandlerException:消息体 Java 类 restexample2client.RestExample2Client$1 的阅读器,以及 Java 类型类 restexample2client.RestExample2Client$1 和 MIME 媒体类型应用程序/xml 未在 com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:561) 在 com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:517) 在 com.sun.jersey.api.client.WebResource.handle(WebResource.java:684) 在 com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) 在 com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507) 在 com.carnabygaming.rest.service.client.EnterpriseRESTClient.findAll_XML(EnterpriseRESTClient.java:47) 在 restexample2client.RestExample2Client.main(RestExample2Client.java:32)
有人知道我哪里出错了吗?单个对象生成的代码工作得很好。 我刚刚注意到,当我进行测试时,该方法不会出现在网页中。仍然需要帮助。
【问题讨论】:
标签: java web-services list rest