The question isn't whether its OK to POST with an empty body. The question
is whether its correct Provider semantics to POST with an empty body. I feel
that the Provider interface implies that there should at least be a root XML
element. The Spec/Javadocs are kind of moot on this point though. I'm not
fundamentally opposed to changing this assumption, but I think thats why it
is the way it is...
- Dan

On 7/2/07, Conrad O'Dea <[EMAIL PROTECTED]> wrote:

Hi,

if a client attempts to send a POST with an empty body to a RESTful
service, the server throws the exception below.  This can be easily
reproduced in the restful_dispatch sample by changing
       InputStream in = url.openStream();
to
       HttpURLConnection conn = (HttpURLConnection)url.openConnection();
       conn.setRequestMethod("PUT");
       InputStream in = conn.getInputStream();

I am guessing that this is not intentional.

"Note that it is possible to use POST even without supplying data in
an HTTP message body." -- from
http://www.w3.org/2001/tag/doc/whenToUseGet.html

I've  created CXF-758 for it.

thanks
Conrad



     [java] Jul 2, 2007 3:33:12 PM
org.apache.cxf.phase.PhaseInterceptorChain doIntercept
     [java] INFO: Interceptor has thrown exception, unwinding now
     [java] org.apache.cxf.interceptor.Fault: Could not parse the XML
stream.
     [java]     at
org.apache.cxf.databinding.source.XMLStreamDataReader.read(
XMLStreamDataReader.java:96)
     [java]     at
org.apache.cxf.databinding.source.XMLStreamDataReader.read(
XMLStreamDataReader.java:86)
     [java]     at
org.apache.cxf.databinding.source.XMLStreamDataReader.read(
XMLStreamDataReader.java:48)
     [java]     at

org.apache.cxf.jaxws.interceptors.ProviderInDatabindingInterceptor.handleMessage
(ProviderInDatabindingInterceptor.java:103)
     [java]     at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
PhaseInterceptorChain.java:206)
     [java]     at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(
ChainInitiationObserver.java:67)
     [java]     at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(
JettyHTTPDestination.java:253)
     [java]     at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(
JettyHTTPDestination.java:213)
     [java]     at
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(
JettyHTTPHandler.java:54)
     [java]     at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
     [java]     at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
     [java]     at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(
ContextHandlerCollection.java:211)
     [java]     at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
     [java]     at org.mortbay.jetty.Server.handle(Server.java:281)
     [java]     at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
     [java]     at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(
HttpConnection.java:821)
     [java]     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java
:513)
     [java]     at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
     [java]     at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
     [java]     at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java
:368)
     [java]     at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java
:442)
     [java] Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected
EOF in prolog
     [java]  at [row,col {unknown-source}]: [1,0]
     [java]     at
com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
     [java]     at
com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
     [java]     at
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java
:2040)
     [java]     at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
     [java]     at
org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:663)
     [java]     at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java
:518)
     [java]     at
org.apache.cxf.databinding.source.XMLStreamDataReader.read(
XMLStreamDataReader.java:93)
     [java]     ... 20 more




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to