Я разрабатываю бэкэнд для приложения, использующего App Engine со средой выполнения PHP и хранилищем данных Google Cloud.
Я настроил локальную разработку для App Engine и использую инструмент gcd для локального хранилища данных.
Когда я отправляю запросы в онлайн Datastore, он работает.
К сожалению, когда я отправляю запрос в локальное хранилище данных, в браузере появляется следующая ошибка:
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling
POST http://localhost:8081/datastore/v1beta2/datasets/project-id/allocateIds: (400)
unsupported content-type: application/json; charset=UTF-8' in G:\Programs\Google\Cloud
SDK\project-id\default\Google\Http\REST.php:79 Stack trace: #0 G:\Programs\Google\Cloud
SDK\project-id\default\Google\Http\REST.php(44): Google_Http_REST::decodeHttpResponse(
Object(Google_Http_Request)) #1 G:\Programs\Google\Cloud SDK\project-id\default\Google
\Client.php(503): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_
Request)) #2 G:\Programs\Google\Cloud SDK\project-id\default\Google\Service\Resource.
php(195): Google_Client->execute(Object(Google_Http_Request)) #3 G:\Programs\Google\
Cloud SDK\project-id\default\Google\Service\Datastore.php(153): Google_Service_
Resource->call('allocateIds', Array, 'Google_Service_...') #4 G:\Programs\Google\Cloud
SDK\project-id\default\DatastoreService.php in G:\Programs\Google\Cloud SDK\
project-id\default\Google\Http\REST.php on line 79
и в gcd я получаю следующую ошибку:
Sep 17, 2014 8:24:07 PM com.google.apphosting.client.serviceapp.BaseApiServlet doPost
INFO: ApiServlet POST
Sep 17, 2014 8:24:07 PM com.google.apphosting.client.serviceapp.BaseApiServlet doCall
INFO: unsupported content-type: application/json; charset=UTF-8
Sep 17, 2014 8:24:07 PM com.google.apphosting.client.serviceapp.BaseApiServlet
writeErrorResponse
SEVERE: INVALID_ARGUMENT: unsupported content-type: application/json; charset=UTF-8
Я попытался изменить тип содержимого в строке 171 Google / Service / Resource.php, но, похоже, ничего не работает.
Любая идея о том, как я могу это исправить?
К сожалению, локальный сервер разработки Google Cloud Datastore (gcd.sh
) в настоящее время не поддерживает JSON в качестве транспорта (который используется клиентской библиотекой PHP).
Обходной путь — создать второй проект, который вы используете только для тестирования.
Других решений пока нет …