Perl 如何将ItemFilters与eBay::API::Simple::Finding一起使用?

Perl 如何将ItemFilters与eBay::API::Simple::Finding一起使用?,perl,ebay-api,Perl,Ebay Api,我正在玩使用从易趣获取已售出物品的游戏,我想使用ItemFilters,但我看不到它们去了哪里。 我特别希望使用项目过滤器 (itemFilter.name = SoldItemsOnly, itemFilter.value = true) and (itemFilter.name = Condition, itemFilter.value = Used) 我在这里尝试直接包括以下内容: keywords => '"princess cut", "diamond ring", -"14k

我正在玩使用从易趣获取已售出物品的游戏,我想使用ItemFilters,但我看不到它们去了哪里。 我特别希望使用项目过滤器

(itemFilter.name = SoldItemsOnly, itemFilter.value = true)
and
(itemFilter.name = Condition, itemFilter.value = Used)
我在这里尝试直接包括以下内容:

keywords => '"princess cut", "diamond ring", -"14k*"', 
Condition => 'Sold',
SoldItemsOnly => 'true', 
sortOrder => 'PricePlusShippingHighest'
我已经做了很长一段时间了,虽然我确信这是很直接的,但我似乎无法理解

use eBay::API::Simple::Finding;

my $api = eBay::API::Simple::Finding->new( {
   appid   => 'APIKEY',
   siteid  => 'EBAY-AU',
} );

$api->execute( 
    'findCompletedItems', { 
    keywords => '"princess cut", "diamond ring", -"14k*"',  
    sortOrder => 'PricePlusShippingHighest',
    } 
);

if ( $api->has_error() ) {
   die "Call Failed:" . $api->errors_as_string();
}

my $dom  = $api->response_dom();
my $hash = $api->response_hash();
非常感谢您的帮助

至于我看到了什么? 排序工作正常,按关键字搜索工作正常,但itemfilters不工作,因此它返回已完成的新的和已使用的项目,无论是已售出的还是未售出的

阅读说明您需要为
ItemFilter
s使用子元素。有一个例子很好地说明了这一点


Garmin nuvi 1300汽车GPS接收机
156955
条件
3000
免费送货
真的
仅限索迪斯
真的
价格加运费最低
2.
1.
查看模块的源代码,我们可以看到它用于构造请求。虽然通常不鼓励使用
XML::Simple
,但我们必须使用它

深入查看
ItemFilter
的文档,我们可以为每个过滤器提供一个
块。这意味着多个被视为是自动的

要使用在API模块中设置XML::Simple的方式生成单个项,我们只需要一个hashref

{
itemFilter=>{
name=>“条件”,
值=>3000,
},
}
将成为


条件
3000
要获得多个,我们需要
itemFilter
键后面的数组引用

{
itemFilter=>[
{
name=>“条件”,
值=>3000,
},
{
名称=>'FreeShippingOnly',
值=>'true',
},
],
}
这就产生了这个XML


条件
3000
免费送货
真的
到目前为止还不错。我们可以很容易地将其破解到API模块调用中。我没有直接执行调用,而是准备好它,然后调用,它使用XML::Simple来形成并返回请求体字符串。检查请求是否看起来合适很好。我通过阅读代码,从上面的代码行开始,然后逐步学习基类,它提供了
execute

使用eBay::API::Simple::Finding;
my$api=eBay::api::Simple::Finding->new({
appid=>“APIKEY”,
siteid=>EBAY-AU,
} );
$api->prepare(
“findCompletedItems”,
{
关键词=>'“公主切割”、“钻石戒指”-“14k*”,
sortOrder=>PricesplusShippingHighest,
itemFilter=>[
{
名称=>'SoldItemsOnly',
值=>'true',
},
{
name=>“条件”,
值=>'已使用',
},
],
}
);
打印$api->\u获取\u请求\u正文;
下面是XML


仅限索迪斯
真的
条件
使用
“公主切割”、“钻石戒指”——“14k*”
价格最高
它没有很好地缩进并不重要。很明显,过滤器在那里


由于我没有API密钥,我自己无法运行它,但我非常确定它会正常工作。

由于某些原因,我的答案中的语法突出显示标记无法正常工作。非常感谢,我将检查它,看看是否可以使用它,我会让您知道“由于某些原因,我的回答中突出显示标记的语法无法正常工作“语法突出显示在引号块内恢复为默认值。看见“我希望我已经把它修好了。”博罗丁,谢谢。我不确定。在最后一个块上,我没有看到XML高亮显示。第一个应该是引用,因为我从文档中逐字复制了它。我认为在Perl和XML之间切换就足够了,但我不明白为什么在最后几个代码块中就不需要了。@simbabque:对不起。最后一个块没有正确高亮显示,因为我没有标记它。已经修好了。CSS使用非常灰色的粉彩颜色是没有帮助的。我倾向于认为堆栈交换知道它们的突出显示很差,并且正在尝试尽可能少地使错误可读。我总是试着用“`开始扩展答案,这样我就可以选择自己的突出显示。让XML全黑比像Perl一样突出显示要好得多!