[英]A message body writer for Java class java.util.ArrayList…and MIME media type text/xml was not found
[英]A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/xml, was not found
这是我从Android调用的代码
RESTClient rs = new RESTClient(WebServicePatterns.SERVICES_URL);
rs.addParam("role_id", "6");
try
{
rs.sendParams_receiveText();// Call WebService
}
rs.getResponse()
这是我的RESTClient的方法。
public void sendParams_receiveText() throws Exception
{
http_client = new DefaultHttpClient();
http_post = new HttpPost(uri);
http_post.setEntity(new UrlEncodedFormEntity(params));
http_response = http_client.execute(http_post);
http_entity = http_response.getEntity();
response = EntityUtils.toString(http_entity);
}
这是我的服务器端Web服务代码
@Produces("application/xml")
@Path("Services")
@Singleton
public class Services_Service
{
public Services_Service()
{
}
@POST
@Path("getServices")
public List<ServicesBean> getServices(@FormParam("role_id") String role_id)
{
Services_DB db = new Services_DB();
List<ServicesBean> services_data = db.myServices(role_id);
return services_data;
}
}
这是myServices代码
.........
private TreeMap<Integer, ServicesBean> servicesData = new TreeMap<Integer, ServicesBean>();
.........
public List<ServicesBean> myServices(String role_id)
{
List<ServicesBean> entireList = new ArrayList<ServicesBean>();
ServicesBean bean = new ServicesBean();
try
{
sql = "SELECT A,B,C from TESTTable where .......";
rs = stmt.executeQuery(sql);
if (rs != null && rs.next())
{
do
{
bean = new ServicesBean();
bean.setService_id(rs.getString("A"));
bean.setService_name(rs.getString("B"));
bean.setService_short_name(rs.getString("C"));
int id = servicesData.size();
servicesData.put(id, bean);
} while (rs.next());
}
entireList.addAll(servicesData.values());
}
return entireList;
问题是我收到这样的错误。
7 Oct, 2013 5:08:05 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/xml, was not found
7 Oct, 2013 5:08:05 PM com.sun.jersey.server.impl.application.WebApplicationImpl onException
SEVERE: Internal server error
javax.ws.rs.WebApplicationException
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:241)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:724)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
有人可以帮我吗。
找不到Java类java.util.ArrayList,Java类型java.util.ArrayList和MIME媒体类型application / xml的消息正文编写器
通过在类的开头添加XmlRootElement来解决问题(请参阅jaxb文档)(服务器类路径中需要jaxb-impl.jar和jaxb-api.jar)
导入javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
错误消息告诉您,Jersey不知道如何将ServiceBean
对象List
转换为有效xml。
您所缺少的是像JAXB这样的对象编组器,它可以为您完成这项工作。
看一下本教程的第6章。 这是很好的解释。
一个简单而简单的答案是。 您不能直接将列表转换为xml。 您需要将列表放入类中,这意味着使用户定义数据类型并将列表放入其中。
您可以将类标记为@XmlRootElement
然后将其转换为XML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.