C# SOAP WSDL 从 Magento 获取结果

问题描述 投票:0回答:2

我有来自 Magento 的 SOAP wsdl,我必须从中获取简单的产品列表。 逻辑是从catalogProductList 中获取“简单”产品。

到目前为止,在 VS2015 中我已经创建了控制台应用程序,并在引用中添加了服务引用,粘贴了 wsdl 的 url,但进一步我不知道该怎么做,也没有找到任何类似的示例。

在 PHP 中代码会是这样的:

$proxy = new SoapClient('http://magentowebshop/api/v2_soap/?wsdl'); 
$sessionId = $proxy->login('user', 'pass'); 

$complexFilter = array(
    'complex_filter' => array(
        array(
            'key' => 'type',
            'value' => array('key' => 'in', 'value' => 'simple')
        )
    )
);
$result = $proxy->catalogProductList($sessionId, $complexFilter);
var_dump($result);
c# magento soap wsdl magento-soap-api
2个回答
1
投票

当您添加 serviceReference 时,它会要求您输入名称空间

Add Web reference screenshot

在您的代码中使用该命名空间创建一个能够调用 WSDL 公开方法的客户端

private void testMethod 
{
    ServiceReference1.ExampleClient client ;

    client = new ServiceReference1.ExampleClient();

    client.exampleMethod() ;

}

当您输入

ServiceReference1.
时,您将看到基于您添加的 wsdl 创建的客户端列表。

然后当您输入

client.
时,您将看到可以实现您想要的目标的方法


0
投票

好的,我找到解决方案了:

    ServiceReference1.PortTypeClient client = new 
    ServiceReference1.PortTypeClient();

    string sessionID = client.login("user", "pass");

    filters filter = new filters();

    filter.complex_filter = new[]
    {
        new complexFilter
        {
            key = "type",
            value = new associativeEntity { key = "in", value = "simple"}
        }
    };
    var list = client.catalogProductList(sessionID, filter, "catalog");

    client.endSession(sessionID);
© www.soinside.com 2019 - 2024. All rights reserved.