Hi Dan
IMHO the Source should be just null if either POST or PUT have an empty body.
Suppose I'd like to write an application on top of Amazon S3 with CXF. There
one creates buckets with empty PUTs...
Cheers, Sergey
----- Original Message -----
From: "Dan Diephouse" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, July 03, 2007 4:34 PM
Subject: Re: sending POST with emtpy body to RESTFUL server causes error
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
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland