2012-06-19 23 views
5

Ich verwende SOAP über Visual Studio 2012 RC mit C#, um die Magento-API zu verwenden. Ich habe dies getan, indem ich einen Service-Verweis hinzugefügt habe, der auf die SOAP-WSDL-Datei zeigt.Wie kann ich (von einer SalesOrderEntity) die Lieferadresse abrufen?

Jetzt habe ich Schwierigkeiten, die Lieferadresse einer SalesOrderEntity zu bekommen. So erhalte ich diese Entitäten.

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

Das funktioniert einfach toll, aber wenn ich durch sie durchlaufen und einige ihrer Informationen angezeigt werden, ich stolpere etwas seltsam.

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); 
} 

Die Lieferadresse ist nicht 0, hat in der Tat zu einer richtigen Zahl eingestellt (und ja, es ist ein String aus irgendeinem seltsamen Grund, obwohl es immer eine Zahl darstellt).

Was mache ich hier falsch?

Antwort

5

Die Adresse wird in einer salesOrderAddressEntity gespeichert, die sich in der salesOrderEntity befindet.

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); 
Verwandte Themen