任何人都可以告诉我为什么这个请求会随着失败而返回。它只在我添加itemFilter(1).name = Seller& itemFilter(1).value(0)= sellerName
时才开始发生当我把它拿出来时,它运作正常。我知道我可以在获取数据时解析出这些信息,但这只是一个黑客攻击方法。
http://svcs.ebay.com/services/search/FindingService/v1
?OPERATION-NAME=findCompletedItems
&SERVICE-VERSION=1.0.0
&SECURITY-APPNAME=MY TOKEN HERE
&GLOBAL-ID=EBAY-US
&keywords=iphone+3gs+8gb
&categoryId=9355
&outputSelector=SellerInfo
&itemFilter(0).name=Condition
&itemFilter(0).value(0)=3000
&itemFilter(1).name=Seller
&itemFiler(1).value(0)=sellerName
这是我提出要求时得到的结果:
<?xml version='1.0' encoding='UTF-8'?>
<findCompletedItemsResponse xmlns="http://www.ebay.com/marketplace/search/v1/services">
<ack>Failure</ack>
<errorMessage>
<error>
<errorId>46</errorId>
<domain>Marketplace</domain>
<severity>Error</severity>
<category>Request</category>
<message>Value is required for item filter, SELLER.</message>
<subdomain>Search</subdomain>
<parameter>SELLER</parameter>
</error>
</errorMessage>
<version>1.11.0</version>
<timestamp>2011-07-23T00:13:50.689Z</timestamp>
</findCompletedItemsResponse>
它一直告诉我,我没有为itemFilter.name = Seller设置值。我也尝试了相同的请求但添加了另一个itemFilter.value(1)= sellerName2
当我尝试这个请求时,这就是它给我的:
<?xml version='1.0' encoding='UTF-8'?>
<errorMessage xmlns="http://www.ebay.com/marketplace/search/v1/services">
<error>
<errorId>5006</errorId>
<domain>CoreRuntime</domain>
<severity>Error</severity>
<category>System</category>
<message>Unable to create xml stream reader for NV: payload format incorrect or payload is empty</message>
<subdomain>Comm_Recv</subdomain>
<parameter name="Param1">NV</parameter>
</error>
</errorMessage>
答案 0 :(得分:3)
由于每个项目没有使用多个值,因此失败。您当前的方式仅会评估每个项目存在多个值时,请尝试以下方法:
http://svcs.ebay.com/services/search/FindingService/v1
?OPERATION-NAME=findCompletedItems
&SERVICE-VERSION=1.0.0
&SECURITY-APPNAME=MY TOKEN HERE
&GLOBAL-ID=EBAY-US
&keywords=iphone+3gs+8gb
&categoryId=9355
&outputSelector=SellerInfo
&itemFilter(0).name=Condition
&itemFilter(0).value=3000
&itemFilter(1).name=Seller
&itemFiler(1).value=sellerName
大多数程序员在代码中使用诸如(this)之类的内容:
if(is_array($value)) {
foreach($value as $j => $content) { // Index the key for each value
$urlfilter .= "&itemFilter($i).$key($j)=$content";
}
}
else {
if($value != "") {
$urlfilter .= "&itemFilter($i).$key=$value";
}
答案 1 :(得分:0)
您也可以尝试
$params = http_build_query($your_array)