Hello,

does it stop working only for PUT requests? In this case, this is due to an
issue with GAE (cf
http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html
).
Resltet 2.1 proposes a fix for that :

"GAE doesn't support HTTP chunked encoding, therefore serialized object
can't be sent (via POST or PUT) to a GAE server. In Restlet Framework
version 2.1 M4 we have a workaround available that buffers the HTTP entity
to prevent chunk encoding. To use it, call the
ClientResource#setRequestEntityBuffering(boolean) method with a "true"
value. Note that this workaround isn't required for the GWT edition."


Best regards,
Thierry Boileau

Hi,
>
> I had some working application
> Android/GWT client and GAE server. After upgrading my android version on
> my smartphone the android client stopped working however GWT still working
> until now.
> I used last production version(GWT/GAE/Restlet) that was distributed more
> than 2 years ago.
>
> Today i would like to fix the problem in Android client, but i get 400 Bad
> Request.
> I went over many documentation, forums, discussions, migration from
> restlet 1 to 2 with many possible solution, but nothing didn't work for me.
>
> Please find below my code and i will appreciate if you can point me to the
> resolution or can i try to make it working. Let me know if you need more
> information of my app. Thank you!
>
> Current versions:
> Restlet: 2.0.15
> GAE:     1.7.3
> GWT:     2.4
>
>
> ************************************************************************************
> ANDROID CLIENT:
>
> public interface NoteResource
> {
>     @Get
>     public NoteList retrieve(String userID);
>
>     @Put
>     public void store(SafeNote note);
>
>     @Delete
>     public void remove(String noteID);
> }
>
> Some code from the main class where i do invocation of the method
> Engine.getInstance().getRegisteredClients().clear();
> Engine.getInstance().getRegisteredClients().add(new
> org.restlet.ext.net.HttpClientHelper(null));
> ClientResource clientResource = new ClientResource("
> http://someapp.appspot/note/get/"; + userID);
> noteResource = clientResource.wrap(NoteResource.class);
> noteList = noteResource.retrieve(signedUser);
>
>
> ******************************************************************************************************************************
>
> GAE SERVER
>
> public class NoteApplication extends Application
> {
>         private static final Logger logger =
> Logger.getLogger(NoteApplication.class.getName());
>
>     /**
>      * When launched as a standalone application.
>      *
>      * @param args
>      * @throws Exception
>      */
>     public static void main(String[] args) throws Exception {
>         Component component = new Component();
>         component.getClients().add(Protocol.FILE);
>         component.getServers().add(Protocol.HTTP, 8080);
>         component.getDefaultHost().attach(new NoteApplication());
>         component.start();
>     }
>
>     @Override
>     public synchronized Restlet createInboundRoot() {
>         Router router = new Router(getContext());
>   getConnectorService().getClientProtocols().add(Protocol.FILE);
>         // Serve the files generated by the GWT compilation step.
>         File warDir = new File("");
>         if (!"war".equals(warDir.getName())) {
>             warDir = new File(warDir, "war/");
>         }
>
>         Directory dir = new Directory(getContext(),
> LocalReference.createFileReference(warDir));
>         router.attachDefault(dir);
>         router.attach("/note", NoteResourceImpl.class);
>         router.attach("/note/login", NoteResourceImpl.class);
>         TemplateRoute routeGet = router.attach("/note/get/{userID}",
> NoteResourceImpl.class);
>         TemplateRoute routeDelete = router.attach("/note/delete/{NoteID}",
> NoteResourceImpl.class);
>         Map<String, Variable> routeVariables =
> routeGet.getTemplate().getVariables();
>         routeVariables.put("userID", new
> Variable(Variable.TYPE_URI_QUERY_PARAM));
>         routeVariables = routeDelete.getTemplate().getVariables();
>         routeVariables.put("safeNoteID", new
> Variable(Variable.TYPE_URI_QUERY_PARAM));
>         return router;
>
> ------------------------------------------------------
>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3027743
>

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

Reply via email to