hay我正在处理条形码阅读器项目,当我从我的php脚本调用upcdatabase时它给了我错误。我使用www.upcdatabase.com
提供的php示例代码是
<?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) . "</pre>";
}else{
echo 'Fault Code: ' . $resp->faultCode() . "\n";
echo 'Fault Reason: ' . $resp->faultString() . "\n";
}
?>
当我检查$ upc ='0639382000393'时;进入upc数据库view this然后它工作正常,但我将此脚本运行到浏览器然后它给出以下错误
Array ( [status] => fail [message] => Invalid UPC length )
答案 0 :(得分:3)
不幸的是,他们的API在文档方面显得相当短缺。
网站在Item Lookup page上提到了三种类型的代码:
在页面提到这三种类型之后,它也说,
除了8位或12位以外的任何内容不是UPC代码!
13-digit EAN/UCC-13是UPC的超集。它包含有效的UPC,但它有许多其他值不是有效的UPC。
来自the Wikipedia article on 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 )
或者,您可以将原始的13位数值设置为upc
参数,而不是设置ean
参数。它也可以使用。