Как сделать PHP / XML вызов RPC к базе данных UPC - PullRequest
0 голосов
/ 21 января 2011

сено, я работаю над проектом чтения штрих-кодов, когда я вызываю upcdatabase из моего php-скрипта, это выдает мне ошибки. я использую пример php, предоставленный www.upcdatabase.com

код

<code><?php error_reporting(E_ALL);
ini_set('display_errors', true);

 require_once 'XML/RPC.php';

 $rpc_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Set your rpc_key here
 $upc='0639382000393';
 // Setup the URL of the XML-RPC service
 $client = new XML_RPC_Client('/xmlrpc', 'http://www.upcdatabase.com');
 $params = array( new XML_RPC_Value( array(
  'rpc_key' => new XML_RPC_Value($rpc_key, 'string'),
  'upc' => new XML_RPC_Value($upc, 'string'),
  ), 'struct'));
 $msg = new XML_RPC_Message('lookup', $params);
 $resp = $client->send($msg);
 if (!$resp)
            {
  echo 'Communication error: ' . $client->errstr;
  exit;
 }
 if(!$resp->faultCode())
 {
  $val = $resp->value();
  $data = XML_RPC_decode($val);
  echo "<pre>" . print_r($data, true) . "
"; } Еще { echo 'Код ошибки:'. $ resp-> faultCode (). "\ П"; echo 'Причина ошибки:'. $ resp-> faultString (). "\ П"; } ?>

когда я проверяю $ upc = '0639382000393'; в базу данных upc просмотреть это , затем он работает нормально, но я запускаю этот скрипт в браузере, а затем выдает следующую ошибку

Array
(
    [status] => fail
    [message] => Invalid UPC length
)

1 Ответ

3 голосов
/ 21 января 2011

К сожалению, их API кажется довольно коротким в документации.

Существует три типа кодов, которые сайт упоминает на странице поиска элементов :

  • 13 цифр для EAN / UCC-13
  • 12 цифр для кода UPC типа A или
  • 8 цифр для кода UPC типа E (с нулевым подавлением).

Сразу после того, как на странице упоминаются эти три типа, также говорится:

Все, кроме 8 или 12 цифр, является , а не кодом UPC!

13-значный EAN / UCC-13 является расширенным набором UPC . Он включает в себя действительные UPC, но имеет много других значений, которые не являются действительными UPC.

С статья в Википедии о EAN-13 :

Если первая цифра равна нулю, все цифры в первой группе из шести кодируются с использованием шаблонов, используемых для UPC, следовательно, штрих-код UPC также является штрих-кодом EAN-13 с первой цифрой, установленной на ноль.

Сказав, что, когда я удалил начальный ноль из $upc, он работал как ожидалось. По-видимому, на странице «Поиск элемента» есть логика для удаления начального нуля, а для API - нет.

Array
(
    [upc] => 639382000393
    [pendingUpdates] => 0
    [status] => success
    [ean] => 0639382000393
    [issuerCountryCode] => us
    [found] => 1
    [description] => The Teenager's Guide to the Real World by BYG Publishing
    [message] => Database entry found
    [size] => book
    [issuerCountry] => United States
    [noCacheAfterUTC] => 2011-01-22T14:46:15
    [lastModifiedUTC] => 2002-08-23T23:07:36
)

Кроме того, вместо установки параметра upc вы можете установить исходное 13-значное значение параметра ean, и оно также будет работать.

...