GoogleJsonResponseException: 404 Not Found с использованием серверной части механизма конечной точки приложений Google

Я следовал инструкциям ниже.

https://developers.google.com/eclipse/docs/running_and_debugging

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
0

который в основном добавил бэкэнд GAE к моему существующему приложению. Затем я пробую приведенный ниже пример, запускаю его на локальном сервере разработки и получаю приведенное ниже исключение, которое возникает после

Note result = endpoint.insertNote(note).execute();

называется.

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found

Мой код ниже.

package com.cloudnotes;

import java.io.IOException;
import java.util.Date;

import android.os.AsyncTask;
import android.content.Context;
import com.cloudnotes.noteendpoint.Noteendpoint;
import com.cloudnotes.noteendpoint.model.Note;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.json.jackson.JacksonFactory;


import android.os.Bundle;
import android.app.Activity;

import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      new EndpointsTask().execute(getApplicationContext());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public class EndpointsTask extends AsyncTask<Context, Integer, Long> {
        protected Long doInBackground(Context... contexts) {

          Noteendpoint.Builder endpointBuilder = new Noteendpoint.Builder(
              AndroidHttp.newCompatibleTransport(),
              new JacksonFactory(),
              new HttpRequestInitializer() {
              public void initialize(HttpRequest httpRequest) { }
              });
      Noteendpoint endpoint = CloudEndpointUtils.updateBuilder(
      endpointBuilder).build();
      try {
          Note note = new Note().setDescription("Note Description");
          String noteID = new Date().toString();
          note.setId(noteID);

          note.setEmailAddress("E-Mail Address");      
          Note result = endpoint.insertNote(note).execute();
      } catch (IOException e) {
        e.printStackTrace();
      }
          return (long) 0;
        }
    }
}

person Jake    schedule 22.03.2013    source источник
comment
Ваш бэкэнд работает? Если вы посещаете localhost:your_port/_ah/api/explorer, видите ли вы, что ваши API работают?   -  person Dan Holevoet    schedule 22.03.2013
comment
@ Джейк, проблема все еще актуальна? Предоставленная вами ссылка на учебник предназначена для веб-приложения, но ваш код предназначен для приложения для Android?   -  person tony m    schedule 21.05.2013
comment
Некоторые дополнительные инструкции были помещены в образец.   -  person Les Vogel - Google DevRel    schedule 09.05.2015
comment
@DanHolevoet нет, я ничего не вижу   -  person codepeaker    schedule 06.01.2018


Ответы (5)


Другая возможная причина этой проблемы — неправильный идентификатор приложения в appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>APPLICATION_ID_HERE</application>

...

</appengine-web-app>
person kg.    schedule 05.04.2015
comment
Жаль, что это не было упомянуто в официальном руководстве. - person Ojonugwa Jude Ochalifu; 05.04.2015
comment
где я могу найти идентификатор приложения - person codepeaker; 06.01.2018

Другая возможная причина 404, если вы вызываете метод с нулевым параметром, а метод не принимает нулевые параметры.

У меня была аналогичная проблема с методом с 4 строковыми параметрами, и я отправил null для одного из них, и все, что я получил, было глупым 404.

Другая возможная причина ошибки 404 на сервере разработки (локальном) заключается в том, что у вас есть параметр с некоторыми странными символами (например, URL-адресом), который сервер разработки (локальный) неправильно обрабатывает, если он отлично работает на живом движке приложения. серверы. Возможное решение: вместо нескольких параметров используйте простой объект Java.

person amarkovits    schedule 16.04.2015
comment
Это действительно была моя вина. Теперь я добавил аннотацию @Nullable. Спасибо - person myfknoll; 15.06.2015
comment
Это тоже было моей ошибкой. - person Edijae Crusar; 05.06.2017

Это сводится к тому, что версия ядра приложения по умолчанию отличается от той, которую вы развернули. Перейдите сюда: https://appengine.google.com/deployment?app_id=s~your-project-id и измените версию по умолчанию

person kakoma    schedule 11.02.2014

это происходит из-за того, что ваш сервер развертывания развернут не полностью. просто повторно разверните серверную часть и убедитесь, что вы получили сообщение об успешном развертывании. вы можете проверить детали процесса развертывания в заголовке верхней страницы. также вы можете проверить, посетив URL-адрес, чтобы проверить:

https://developers.google.com/apis-explorer/?base=https://[YOUR_PROJECT_ID].appspot.com/_ah/api#p/
person hbinduni    schedule 23.06.2013

Попробуйте обновить плагин и библиотеки зависимостей до последней версии. См. https://stackoverflow.com/a/37639701/857346.

person maohieng    schedule 05.06.2016