2015-01-04 4 views
0

Хорошо, я пытаюсь безуспешно подключиться к удаленному хранилищу данных и заполнения из моей локальной машине, используя шаги, описанные здесь: https://cloud.google.com/appengine/docs/java/tools/remoteapi#Configuring_Remote_API_on_the_ClientGAE Remote API - не удается подключиться

public static void main(String[] args) { 

    String username = "[email protected]"; 
    String password = "mygmailpassword"; 
    RemoteApiOptions options = new RemoteApiOptions() 
     .server("myappname.appspot.com", 443) 
     .credentials(username, password); 
    RemoteApiInstaller installer = new RemoteApiInstaller(); 
    installer.install(options); 

    try {  
     DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); 
     ... 

я получаю в установщике 404 .install (options): java.io.IOException: не удается получить appid из удаленного api; status code = 404 Я что-то пропустил? Я включил удаленный api в свой web.xml и развернулся к GAE. Я являюсь владельцем проекта.

ответ

2

Запустите службу локально (с включенным удаленным api) и попробуйте запустить тот же код, используя «localhost» и 8888 (порт), и проверьте, может ли ваш код получить доступ к локально запущенному сервису. Ваш код кажется правильным. Возможны 2 варианта: 1. RemoteApi включен неправильно. 2. Имя приложения не указано правильно.

Кроме этого, я также использую следующий код для доступа к удаленной API-

 installer.install(options); 
     try { 
      // Update the options with reusable credentials so we can skip 
      // authentication on subsequent calls. 
      options.reuseCredentials(username, installer.serializeCredentials()); 
     } finally { 
      installer.uninstall(); 
     } 

Однако, это не должно дать вам ошибку вы получаете.

+0

Если вы получаете 404, это означает, что ваше приложение не работает, удаленный API не настроен должным образом (конечной точки нет), или вы неправильно написали имя приложения. – Adam

1

Я понимаю, что это происходит немного поздно, но я просто нашел это, когда искал Google, потому что у меня была аналогичная проблема, и я решил это для себя. Для меня проблема заключалась в том, что мое приложение AppEngine, которое обслуживало удаленный API, было приложением python, а документы python инструктировали настройку удаленной конечной точки api как /remoteapi.*

Однако мой удаленный клиент api является Java-приложением , и, по-видимому, удаленный вызов api, который он делает, подходит к концу:/remote_api. Поэтому добавление этого в конфигурацию маршрута сервера (в моем случае app.yaml) решило проблему. Обратите внимание также, что если ваш удаленный API служит Appengine приложения не в модуле по умолчанию, URL-адрес должен быть чем-то вроде моего-модуля имени- -dot- моего проекта- .appspot.com

Кроме того, вы должны использовать useApplicationDefaultCredential() вместо credentials(), он устарел.

Смежные вопросы