hi,

ok I will try to work with the patched converter although I must say that
this should really be part of Restlet for cases such as JSON submitting via
Web Forms.

In order to move forward - Can you elaborate a bit more about how exactly
should I register the patched Converter?

I reviewed the META-INF file  of the xstream extension per you instruction -
unfortunately I did not understand from its content what should I do. Can
you give me more detailed instructions on how to integrate it into my
project?

Thanks,

Chen.



On Tue, Apr 13, 2010 at 15:58, Thierry Boileau
<[email protected]>wrote:

> Hi Chen,
>
> yes, there is a difference between AJAX requests and classic "web form"
> POST requests.
> AJAX allows you to send HTTP requests such as PUT (It may depends on the
> browser, though) with correct content-type, as a classic client.
> Here are the request/response headers sent by Firefox 3.6 when clicking on
> the "update" button on the sample app [1] illustrating the "first system"
> sample app [2]:
>
> PUT /contacts/123 HTTP/1.1
>
> Host: restlet-example-serialization.appspot.com
>
> User-Agent: Restlet-Framework/2.0snapshot
>
> Accept: application/x-java-serialized-object+gwt
>
> Accept-Language: fr,en;q=0.5
>
> Accept-Encoding: gzip,deflate
>
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>
> Keep-Alive: 115
>
> Connection: keep-alive
>
> Content-Type: application/x-java-serialized-object+gwt; charset=UTF-8
>
> Referer:
> http://restlet-example-serialization.appspot.com/org_restlet_example_gae_serialization/747F0EF6A10597E5888F82DD3E9494F8.cache.html
>
> Content-Length: 242
>
>
> HTTP/1.1 200 OK
>
> Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
>
> Accept-Ranges: bytes
>
> Date: Tue, 13 Apr 2010 12:22:37 GMT
>
> Content-Type: text/html
>
> Server: Google Frontend
>
> Content-Length: 0
>
>
>
> >It is not clear to me why I need a custom converter?
> Well, it's not clear to me too. :)
> I think I've overinterpreted your questions.
> If I understand well, you send a POST request (I'm not clear if it is via
> AJAX or a Web form). For sure it won't work since the resource accepts only
> GET and PUT.
> In the case you send such POST requests because of Web form limitations,
> you can workaround this by leveraging the TunnelService [3]:
>  - make sure application#tunnelService#methodTunnel is turned on.
>  - update the target URL, by adding a "method=put" (for example) parameter
> in the query. The Tunnel filter is in charge to update the method of the
> request.
>
> Now, let's have a look at the body of your request. You design the resource
> as follow:
> @Put("json")
> public void insertItem(Item myItem){
> //insert item into DataStore
> }
>
> By doing so, you rely on registered converters in order to convert a JSON
> representation (the source representation) into an Item instance (the target
> object). If the source representation has not the desired media type, it
> will fail and return a 405 status. If any converter is unable to generate
> the conversion to the target type, it will also fail.
> Having said that, the default converter supports such methods:
> @Put
> public void insertItem(Form myItemAsAForm){
> //insert item into DataStore
> }
>
> The Xstream (patched) converter, or Jackson converter should be able to
> support such annotated method as soon as the source representation has a
> "json" media type and its content is compatible with the framework
> expectations:
> @Put("json")
> public void insertItem(Item myItem){
> //insert item into DataStore
> }
>
> I hope this will help you a little bit. Feel free, of course, to ask for
> more details.
>
> >btw - GET operations are very limited since you cannot upload large JSON
> >objects because of URL length limitations (especially on mobile devices)
> Well, I'm not sure to fully understand. Representations are not to be sent
> via the URL, in query parameters. That's a very bad idea.
>
> Best regards,
> Thierry Boileau
>
> [1]
> http://restlet-example-serialization.appspot.com/Org_restlet_example_gae_serialization.html
> [2] http://wiki.restlet.org/docs_2.0/13-restlet/303-restlet.html
> [3] http://wiki.restlet.org/docs_2.0/13-restlet/207-restlet.html
>
> ------------------------------------------------------
>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2580786
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2580806

Reply via email to