Reputation: 159
This is the code I am calling from Android
RESTClient rs = new RESTClient(WebServicePatterns.SERVICES_URL);
rs.addParam("role_id", "6");
try
{
rs.sendParams_receiveText();// Call WebService
}
rs.getResponse()
Here is my RESTClient's method.
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);
}
Here is my Server side Web Service Code
@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;
}
}
here is myServices code
.........
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;
The problem is I am getting Errors like this.
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)
Could Someone please help me out.
Upvotes: 2
Views: 11844
Reputation: 762
The error message is telling you, that Jersey does not know how to transform your List
of ServiceBean
objects into valid xml.
What you are missing is an object marshaller like JAXB which does this job for you.
Take a look at chapter 6 of this tutorial. It is well explained.
Upvotes: 1
Reputation: 3439
Well a sort and simple answer is. You can not transform directly list to the xml. You need to put list into the class means make your user defined data type and put list into it.
you can mark class as @XmlRootElement
then it will be convert to the XML.
Upvotes: 0
Reputation: 81
A message body writer for Java class java.util.ArrayList, and Java type java.util.ArrayList, and MIME media type application/xml was not found
Problem was solved by adding XmlRootElement at the begining of the class (See jaxb documentation)
(Need jaxb-impl.jar and jaxb-api.jar in server classpath)
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
Upvotes: 2