Posting Data to a RESTful Service
The previous sections demonstrated several different variations of
building and invoking REST-friendly web services to retrieve data. All
of the RESTful operations are decorated with the WebGet
attribute, which indicates that they
will be invoked with an HTTP GET
.
RESTful operations also support other HTTP methods, such as POST
, PUT
,
and DELETE
. However, Silverlight 2 is
capable of directly issuing an HTTP GET
or HTTP POST
method only through managed code. You can
invoke GET
requests from Silverlight
2 using the WebClient
class’s
DownloadStringAsync
method, and you
can invoke POST
requests using the UploadStringAsync
method.
Note
There are creative ways to pass a PUT
or DELETE
from Silverlight 2, such as passing
the HTTP PUT
or DELETE
method as a parameter in the X-HTTP-Method-Override
header. This technique, which is referred to as POST
Tunneling, allows a PUT
or DELETE
method to be sent in the
X-HTTP-Method-Override
header of an
HTTP POST
method. Many firewalls
allow only GET
or POST
, so this technique is commonly used to
issue GET
, PUT
, POST
, and DELETE
methods when the web service expects
them.
Defining POST Methods
Creating a RESTful
web
service that accepts an HTTP POST
request using WCF requires that the operation be decorated with the
WebInvoke
attribute instead of the
WebGet
attribute. The code in Example 9-18 demonstrates how to decorate a web
service operation with the WebInvoke
attribute to indicate that the
HTTP method is a POST
. The
Get Data-Driven Services with Silverlight 2 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.