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);
MapString, 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=4447dsMessageId=3027743
--
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=3028520