eBay 交易 API GetCategories 请求 returns 'Application name invalid'
eBay Trading API GetCategories request returns 'Application name invalid'
当我尝试使用方法 getCategories
通过 eBay Trading API 检索所有类别时,我收到此错误:
FailureApplication name invalid.API application "222277"
invalid.127Error222277RequestError895E895_INTL_APICATALOG_17257399_R1
使用的header是:
$headers = array(
'Content-Type:text/xml',
'X-EBAY-API-COMPATIBILITY-LEVEL: 895',
'X-EBAY-API-DEV-NAME: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
'X-EBAY-API-APP-NAME: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx',
'X-EBAY-API-CERT-NAME: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
'X-EBAY-API-CALL-NAME: GetCategories',
'X-EBAY-API-SITEID: 0'
);
XML 后域:
$body = <<<BODY
<?xml version="1.0" encoding="utf-8"?>
<GetCategoriesRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>auth token......</eBayAuthToken>
</RequesterCredentials>
<CategorySiteID>0</CategorySiteID>
<DetailLevel>ReturnAll</DetailLevel>
</GetCategoriesRequest>
BODY;
和卷曲代码:
$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, $endpoint);
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $body);
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($connection);
curl_close($connection);
Ebay 提供了一个 API 测试工具。
它将预先填充您的凭据并让您进行测试呼叫。
这将帮助您调试可能遇到的任何错误。
不幸的是,eBay 最近停止了他们的 API 测试工具。但是,有一些第 3 方的可能就足够了。
对于您的问题,我建议使用名为 GetCategoryInfo 的更简单的购物 API 电话。您不需要 POST 您的请求或发送任何 HTTP headers,并且您可以将整个调用构建到 1 URL/REST/GET 请求中。这使得调试更容易。
无论采用哪种方式,我认为您无法通过 1 个请求检索 eBay 的所有类别。相反,计划在每个级别遍历类别树,收集 child 个类别名称和 ID。
当我尝试使用方法 getCategories
通过 eBay Trading API 检索所有类别时,我收到此错误:
FailureApplication name invalid.API application "222277" invalid.127Error222277RequestError895E895_INTL_APICATALOG_17257399_R1
使用的header是:
$headers = array(
'Content-Type:text/xml',
'X-EBAY-API-COMPATIBILITY-LEVEL: 895',
'X-EBAY-API-DEV-NAME: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
'X-EBAY-API-APP-NAME: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx',
'X-EBAY-API-CERT-NAME: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
'X-EBAY-API-CALL-NAME: GetCategories',
'X-EBAY-API-SITEID: 0'
);
XML 后域:
$body = <<<BODY
<?xml version="1.0" encoding="utf-8"?>
<GetCategoriesRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>auth token......</eBayAuthToken>
</RequesterCredentials>
<CategorySiteID>0</CategorySiteID>
<DetailLevel>ReturnAll</DetailLevel>
</GetCategoriesRequest>
BODY;
和卷曲代码:
$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, $endpoint);
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $body);
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($connection);
curl_close($connection);
Ebay 提供了一个 API 测试工具。
它将预先填充您的凭据并让您进行测试呼叫。
这将帮助您调试可能遇到的任何错误。
不幸的是,eBay 最近停止了他们的 API 测试工具。但是,有一些第 3 方的可能就足够了。
对于您的问题,我建议使用名为 GetCategoryInfo 的更简单的购物 API 电话。您不需要 POST 您的请求或发送任何 HTTP headers,并且您可以将整个调用构建到 1 URL/REST/GET 请求中。这使得调试更容易。
无论采用哪种方式,我认为您无法通过 1 个请求检索 eBay 的所有类别。相反,计划在每个级别遍历类别树,收集 child 个类别名称和 ID。