Hi
On 24/07/12 17:23, bcarlson wrote:
Hello,
I've been using CXF WebClient for a few months now on a project, and I've
not had any issues. Today is different. I'm working on doing a
WebClient.post() to a server that I don't have access to, and I'm getting
the error below. The only info I've seen on this was a JIRA ticket saying
that the response status code should change from a 500 to a 406. I dug on
Google as well, but didn't find a definitive solution.
My code that calls this is as follows:
WebClient client =
WebClient.create(URLTools.generateURL(getEndpointGetAccessToken(),grantType,authCode,clientId,clientSecret,redirectURL));
Response res = null;
try {
if(client != null) {
//client.replaceHeader("Content-Type","application/x-www-form-urlencoded");
//client.type("application/x-www-form-urlencoded");
client.type(MediaType.APPLICATION_FORM_URLENCODED);
res =
(Response)client.post(null,Response.class);
logDebug("response: " + new
java.util.Scanner((InputStream)res.getEntity()).useDelimiter("\\A").next());
**** Error Tue Jul 24 10:24:05 CDT 2012 1343143445236
/company/oauth/OAuthService java.lang.IllegalArgumentException: Media
type separator is missing
org.apache.cxf.jaxrs.client.ClientWebApplicationException:
java.lang.IllegalArgumentException: Media type separator is missing
Hmm, it it 2nd time this issue has been reported recently.
I've done a test to reproduce the issue reported few days ago and I
could only see the code working as expected, but something is obviously
wrong there....
On the server side, sometimes we can get
Accept: text/html, *;q=0.6
etc and the code specifically manages values like '*'.
Can you please capture the actual Accept or Content-Type value that may
be causing it ?
I think I'll just do a simpler check for values like '*;q=0.6' and also
introduce a contextual property to optionally ignore values like 'a'.
Thanks, Sergey
at
org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:796)
at
org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:766)
at
org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:696)
at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:324)
at org.apache.cxf.jaxrs.client.WebClient.post(WebClient.java:336)
at
com.company.oauth.OAuthService.getAccessToken(OAuthService.java:36)
at
com.company.oauth.OMASLoginRedirectServlet.service(OMASLoginRedirectServlet.java:62)
at atg.servlet.DynamoServlet.service(DynamoServlet.java:166)
at
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at
atg.servlet.pipeline.TailPipelineServlet.service(TailPipelineServlet.java:161)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.DispatcherPipelineServletImpl.service(DispatcherPipelineServletImpl.java:253)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.http.CookieBufferServlet.service(CookieBufferServlet.java:97)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.ExpiredPasswordServlet.service(ExpiredPasswordServlet.java:356)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.MimeTyperPipelineServlet.service(MimeTyperPipelineServlet.java:206)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.droplet.DropletEventServlet.service(DropletEventServlet.java:565)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
com.company.oauth.OMASLoginAccessServlet.service(OMASLoginAccessServlet.java:52)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.commerce.order.CommerceCommandServlet.service(CommerceCommandServlet.java:128)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.commerce.promotion.PromotionServlet.service(PromotionServlet.java:191)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.AccessControlServlet.service(AccessControlServlet.java:655)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.sessionsaver.SessionSaverServlet.service(SessionSaverServlet.java:2425)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.PageEventTriggerPipelineServlet.service(PageEventTriggerPipelineServlet.java:169)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.multisite.SiteSessionEventTriggerPipelineServlet.service(SiteSessionEventTriggerPipelineServlet.java:139)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.SessionEventTrigger.service(SessionEventTrigger.java:477)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.ProfilePropertyServlet.service(ProfilePropertyServlet.java:208)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.ProfileRequestServlet.service(ProfileRequestServlet.java:437)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.DynamoPipelineServlet.service(DynamoPipelineServlet.java:469)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.URLArgumentPipelineServlet.service(URLArgumentPipelineServlet.java:280)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.PathAuthenticationPipelineServlet.service(PathAuthenticationPipelineServlet.java:370)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.userprofiling.sso.PassportServlet.service(PassportServlet.java:554)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.security.ThreadUserBinderServlet.service(ThreadUserBinderServlet.java:91)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.dtm.TransactionPipelineServlet.service(TransactionPipelineServlet.java:212)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.multisite.SiteContextPipelineServlet.service(SiteContextPipelineServlet.java:348)
at
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
at
atg.servlet.pipeline.HeadPipelineServlet.passRequest(HeadPipelineServlet.java:1174)
at
atg.servlet.pipeline.HeadPipelineServlet.service(HeadPipelineServlet.java:857)
at
atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:250)
at atg.filter.dspjsp.PageFilter.doFilter(PageFilter.java:263)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Caused by: java.lang.IllegalArgumentException: Media type separator is
missing
at
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:53)
at
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:33)
at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
at
org.apache.cxf.jaxrs.client.AbstractClient.getResponseContentType(AbstractClient.java:620)
at
org.apache.cxf.jaxrs.client.AbstractClient.readBody(AbstractClient.java:439)
at
org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:782)
... 72 more
Any suggestions on tracking this down are appreciated!
Thanks in advance,
-Ben
--
View this message in context:
http://cxf.547215.n5.nabble.com/Media-type-separator-is-missing-how-to-troubleshoot-tp5711524.html
Sent from the cxf-user mailing list archive at Nabble.com.