Я пытаюсь получить пример простого запроса Google (от GitHub), к сожалению, с определенным недостатком успеха … все, что я получаю, – это код выхода 255.
Я установил, что проблема была в вызове Google Server, поэтому добавлен обработчик исключений для кода. Теперь программа выглядит так:
<?php /* * Copyright 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ include_once "templates/base.php"; echo pageHeader("Simple API Access"); /************************************************ Make a simple API request using a key. In this example we're not making a request as a specific user, but simply indicating that the request comes from our application, and hence should use our quota, which is higher than the anonymous quota (which is limited per IP). ************************************************/ set_include_path("../src/" . PATH_SEPARATOR . get_include_path()); require_once 'Google/Client.php'; require_once 'Google/Service/Books.php'; /************************************************ We create the client and set the simple API access key. If you comment out the call to setDeveloperKey, the request may still succeed using the anonymous quota. ************************************************/ $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $apiKey = "******************************************"; if ($apiKey == '<YOUR_API_KEY>') { echo missingApiKeyWarning(); } $client->setDeveloperKey($apiKey); $service = new Google_Service_Books($client); /************************************************ We make a call to our service, which will normally map to the structure of the API. In this case $service is Books API, the resource is volumes, and the method is listVolumes. We pass it a required parameters (the query), and an array of named optional parameters. ************************************************/ $optParams = array('filter' => 'free-ebooks'); // next line replaced with an exception handling block // $results = $service->volumes->listVolumes('Henry David Thoreau', $optParams); try{ $results = $service->volumes->listVolumes('Henry David Thoreau', $optParams); var_dump($results); } catch (Exception $e) { echo "call error: " .$e->getMessage()."\n"; echo $e->getTraceAsString()."\n"; } /************************************************ This call returns a list of volumes, so we can iterate over them as normal with any array. Some calls will return a single item which we can immediately use. The individual responses are typed as Google_Service_Books_Volume, but can be treated as an array. ***********************************************/ echo "<h3>Results Of Call:</h3>"; // update to code (off StackOverflow) //foreach ($results as $item) { // echo $item['volumeInfo']['title'], "<br /> \n"; //} foreach($results->getItems() as $item){ echo $item->volumeInfo->getTitle(), "<br /> \n"; } /************************************************ This is an example of deferring a call. ***********************************************/ //$client->setDefer(true); //$optParams = array('filter' => 'free-ebooks'); //$request = $service->volumes->listVolumes('Henry David Thoreau', $optParams); //$results = $client->execute($request); // //echo "<h3>Results Of Deferred Call:</h3>"; //foreach ($results as $item) { // echo $item['volumeInfo']['title'], "<br /> \n"; //} // echo pageFooter(__FILE__);
Трассировка ошибки следующая:
call error: HTTP Error: Unable to connect: '0' #0 C:\srv\GoogleApi\Google\IO\Abstract.php(117): Google_IO_Stream->executeRequest(Object(Google_Http_Request)) #1 C:\srv\GoogleApi\Google\Http\REST.php(42): Google_IO_Abstract->makeRequest(Object(Google_Http_Request)) #2 C:\srv\GoogleApi\Google\Client.php(499): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) #3 C:\srv\GoogleApi\Google\Service\Resource.php(195): Google_Client->execute(Object(Google_Http_Request)) #4 C:\srv\GoogleApi\Google\Service\Books.php(2304): Google_Service_Resource->call('list', Array, 'Google_Service_...') #5 C:\srv\GoogleApi\simple-query.php(60): Google_Service_Books_Volumes_Resource->listVolumes('Henry David Tho...', Array) #6 {main} <h3>Results Of Call:</h3> Process finished with exit code 255
Любая помощь будет оценена.
NB: Возможно, это просто проблема аутентификации. Я удаленный работник без доступа к Google Консоли, поэтому должен полагаться на босса, который клянется, что он предоставил правильный ключ!