Я написал веб-приложение для работы в Google AppEngine с использованием среды Restlet, обмениваясь с помощью json с веб-клиентами. Они работают так, как ожидалось. Тем не менее, один конкретный ресурс, написанный для ответа на клиент Android, не работает при доступе через Android. Однако он работает при доступе через веб-браузер (я не отправляю параметры запроса из браузера и, таким образом, получаю 400, что в этом случае нормально).Проблемы с запущенными приложениями в Google AppEngine
Этот код работает при запуске на DevAppServer:
public class PlayResource extends ServerResource {
private final float SCOREBASE = 1000.0F;
@Get
@Post
public JsonRepresentation play() {
try {
JsonRepresentation rep = new JsonRepresentation(getRequestEntity());
JSONObject inputJson = rep.getJsonObject();
JSONObject outputJson = new JSONObject();
String country = inputJson.optString("country");
outputJson.put("country", doSomething("country",country));
......
......
return new JsonRepresentation(outputJson);
} catch (IOException e) {
try {
setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
return new JsonRepresentation(
new JSONObject()
.put(Messages.TYPE_ERROR, Messages.BAD_REQUEST));
} catch (JSONException e2) {
setStatus(Status.SERVER_ERROR_INTERNAL);
return null;
}
} catch (JSONException e) {
try {
setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
return new JsonRepresentation(
new JSONObject()
.put(Messages.TYPE_ERROR, Messages.BAD_FORMAT));
} catch (JSONException e2) {
setStatus(Status.SERVER_ERROR_INTERNAL);
return null;
}
}
}
}
и клиента Android устройства работает этот код:
Client client = new Client(Protocol.HTTP);
try {
JsonRepresentation requestJSON = new JsonRepresentation(new JSONObject()
.put("country", country.trim())
);
Request req = new Request(Method.GET,"http://****.appspot.com/resource/play",requestJSON);
Response resp = client.handle(req);
String res = resp.getEntity().getText();
JSONObject resultJSON = new JSONObject(res);
Выполнение этого запроса просто висит Android-клиент, сервер Безразлично» t напишите любые сообщения журнала, которые указывают, что запрос туда не поступает.
Приложения, не реагирующие на App Engine, обычно вызваны неверно сконфигурированными описаниями app.yaml и/или отсутствующими обработчиками. Можете ли вы включить их обоих здесь? Это поможет диагностировать проблему. – Greg
Вы пробовали мои тесты? – Panthro