我如何(从SalesOrderEntity)检索送货地址?

时间:2012-06-19 07:49:52

标签: c# magento soap

我通过Visual Studio 2012 RC和C#使用SOAP来使用Magento API。我通过添加指向SOAP WSDL文件的服务引用来完成此操作。

现在,我无法获得SalesOrderEntity的送货地址。以下是我检索这些实体的方法。

var f = new filters();
f.filter = new associativeEntity[] { 
    new associativeEntity {
        key ="status", 
        value ="processing"
    }
};
var entities = mservice.salesOrderList(mlogin, f);

这很有效,但是当我遍历它们并显示它们的一些信息时,我偶然发现了一些奇怪的东西。

foreach (var entity in entities)
{

    //the following line crashes for some strange reason.
    //the error is SoapHeaderException: Address not exists.
    var info = mservice.customerAddressInfo(mlogin, int.Parse(entity.shipping_address_id));

    Debug.WriteLine(info.firstname);
}

送货地址不是0,确实设置为正确的数字(是的,虽然它总是代表一个数字,但它是一个字符串,但它总是代表一个数字)。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

地址存储在salesOrderAddressEntity内,salesOrderEntity

var magento = new MagentoService();
var session = magento.login("LOGIN", "APIKEY");

var order = magento.salesOrderInfo(session, "100029631");

var address = order.shipping_address;

Console.WriteLine(address.firstname + " " + address.lastname);
Console.WriteLine(address.street);
Console.WriteLine(address.postcode + " " + address.city);