N11 Api Entegrasyonu Hakkında
5
●1.256
- 19-07-2019, 10:09:39Merhaba, soap request attığınızda size dönen response objesi doğru bir şekilde mapleniyor mu, kontrol ettiniz mi?
- 19-07-2019, 12:15:04Sanırsam web servisi direk referans ekleyip kullanıyorsunuz. Ben de çok yakın zamanlarda N11 entegrasyonu gerçekleştirdim .NET üzerinde ancak referans olarak eklemek yerine XmlSerializer ve XmlReader yardımıyla HttpWebRequest kullanarak entegre ettim. Web referans olarak eklediğimde sizin gibi success dönse bile response üzerinden herhangi bir data dönmüyordu. Ya gerçekten biz bir şey kaçırıyoruz ya da cidden serviste bir problem var.
- 19-07-2019, 14:36:51Referans olarak eklendiğinde sürekli programla beraber kendisinin DLL dosyalarını taşımak boyut olarak dezavantaj gibi geldiğinden yapmıştım ben de. Şöyle bir örnek vereyim eğer yeniden WebRequest kullanmayı isterseniz şu şekilde nodeları almayı deneyebilirsiniz:
Bu kodu siparişler ile ilgili bir metodda kullanmıştım.
// Post metodu kendi yazdığım bir metod sadece xml ve soap action adı verip post ediyor // geriye xml dönüyor var responseXmlDocument = Post(orderXml, $"{_host}/SetOrder"); // Xml içerisinde olan gerekli namespace'leri eklediğim alan XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(responseXmlDocument.NameTable); xmlNamespaceManager.AddNamespace("soap", "http://www.w3.org/2003/05/soap-envelope"); // Body içerisindeki nodeları almak için ilk body'i seçiyorum var xmlNode = responseXmlDocument.SelectSingleNode("/soap:Envelope/soap:Body", xmlNamespaceManager); // Burada dönen mesajı vs seçip dönüyorum return new OrderResultInfo { ResultCode = xmlNode["SetOrderResponse"]["SetOrderResult"]["OrderResultInfo"]["ResultCode"].InnerText, ResultMessage = xmlNode["SetOrderResponse"]["SetOrderResult"]["OrderResultInfo"]["ResultMessage"].InnerText };Çok amatörce bir kodmuş gibi durabilir ama sadece örnek için yazdım umarım kafanızda bir şey canlanmıştır. - 20-07-2019, 20:46:28Şurada bulunan iki satırı;
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(responseXml.NameTable); xmlNamespaceManager.AddNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");Şununla değiştirip tekrar deneyebilir misiniz;
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(responseXml.NameTable); xmlNamespaceManager.AddNamespace("env", "http://schemas.xmlsoap.org/soap/envelope/"); xmlNamespaceManager.AddNamespace("ns3", "http://www.n11.com/ws/schemas");