Hi dear all.
We have using the CXF client. But we found the client default accept type is
application/xml and is not text/plain or */*. Could you please help take a
look? Appreciate it! :)
I think I get the root cause and I'm not sure if this can be treated as a
bug?
The reason is that if we don't explicitly set the accept header of the
client request, it will set it as "application/xml" instead of "*/*".
Therefore a request with accept header := application/xml comes to the
server. As the resource class is annotated by @Produce(TEXT_PLAIN), it will
refuse accept header with application/xml with 406 as expected.
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getAll() {
return strings.toString();
}
Client code is:
ClientBuilder cb = ClientBuilder.newBuilder();
Client c = cb.build();
WebTarget t1 = c.target(uri + "/string");
String result = t1.request()..get(String.class);
htmlPage = "\nClient string test: " + "\nReturn
result: "
+ result;
System.out.println(htmlPage);
c.close();
Then I will get the error message:
[ERROR ] SRVE0777E: Exception thrown by application class
'sun.reflect.NativeConstructorAccessorImpl.newInstance0:-2'
javax.ws.rs.NotAcceptableException: HTTP 406 Not Acceptable
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:85)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
at java.lang.reflect.Constructor.newInstance(Constructor.java:541)
at
org.apache.cxf.jaxrs.client.AbstractClient.convertToWebApplicationException(AbstractClient.java:478)
at [internal classes]
If I modify client code to:
target.request().accept(*MediaType.WILDCARD*).get(String.class);
The exception is disappear.
When I learn the CXF code, I found CXF really set the default accept type to
application/xml.
I'm not sure is there any reason to set application/xml as default? I always
think */* should be the default at least.
Or can we think this is a bug?
Thanks for your time and help! :)
--
View this message in context:
http://cxf.547215.n5.nabble.com/Why-CXF-Client-default-accept-type-is-application-xml-tp5749057.html
Sent from the cxf-dev mailing list archive at Nabble.com.