У меня есть приложение для Android, которое хранится в облаке с помощью Google App Engine. Я использую Cloud Endpoints. Моя проблема в том, что я не могу отправить данные с сервера на мой клиент (устройство Android), или, лучше сказать, пока не знаю, как это сделать.Как я могу отправить серверу (Google App Engine, Cloud Endpoints) информацию моему клиенту?
До сих пор мне удалось вставить данные в хранилище данных, создав конечную точку и вызывая метод, который отвечает за добавление записи в базу данных (расположенную на стороне сервера, в myProject - AppEngine) используя следующий код (на клиенте): \
Noteendpoint.Builder endpointBuilder = new Noteendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) { }
});
Noteendpoint endpoint = CloudEndpointUtils.updateBuilder(
endpointBuilder).build();
try {
// Construct the note.
Note note = new Note().setDescription("Note DescriptionRoxana");
String noteID = new Date().toString();
note.setId(noteID);
note.setEmailAddress("E-Mail AddressRoxana");
// Insert the Note, by calling a method that's on the server side - insertNote();
Note result = endpoint.insertNote(note).execute();
} catch (IOException e) {
e.printStackTrace();
}
Но я не могу видеть способ извлечения данных из хранилища данных и отображать его на стороне сервера. Я попытался сделать то же самое, создать конечную точку, которая вызовет метод, который извлекает все записи в базе данных (метод, который находится на сервере), но мое приложение выходит из строя.
Код для метода, который извлекает данные из хранилища данных заключается в следующем:
public CollectionResponse<Note> listNote(
@Nullable @Named("cursor") String cursorString,
@Nullable @Named("limit") Integer limit) {
EntityManager mgr = null;
Cursor cursor = null;
List<Note> execute = null;
try {
mgr = getEntityManager();
Query query = mgr.createQuery("select from Note as Note");
if (cursorString != null && cursorString != "") {
cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
}
if (limit != null) {
query.setFirstResult(0);
query.setMaxResults(limit);
}
execute = (List<Note>) query.getResultList();
cursor = JPACursorHelper.getCursor(execute);
if (cursor != null)
cursorString = cursor.toWebSafeString();
// Tight loop for fetching all entities from datastore and accomodate
// for lazy fetch.
for (Note obj : execute)
;
} finally {
mgr.close();
}
return CollectionResponse.<Note> builder().setItems(execute)
.setNextPageToken(cursorString).build();
}
Вы видите, возвращаемый тип является ответом коллекции. У вас есть доступ к этому типу данных, после выполнения следующего импорта:
import com.google.api.server.spi.response.CollectionResponse;
Я сделал вывод, что это типа данных, характерная для серверной стороны, таким образом, я понятия не имею, как я могу бросить его в список , ArrayList или любой другой тип коллекции, который может использоваться на стороне клиента.
Как мне это сделать? Поскольку добавление данных было настолько простым и таким прямым, я предположил, что получение данных будет осуществляться таким же образом, но, по-видимому, мне не хватает чего-то существенного для этого.
Спасибо заранее!