كيف يمكنني الحصول على قيمة من خدمة ويب XML في C#؟

StackOverflow https://stackoverflow.com/questions/51129

  •  09-06-2019
  •  | 
  •  

سؤال

في C#، إذا كنت بحاجة إلى فتح اتصال HTTP، وتنزيل XML والحصول على قيمة واحدة من النتيجة، فكيف أفعل ذلك؟

من أجل الاتساق، تخيل أن خدمة الويب موجودة على www.webservice.com وأنه إذا قمت بتمريرها إلى وسيطة POST fXML=1 فإنها تعيدك

<xml><somekey>somevalue</somekey></xml>

أود أن يبصق "بعض القيمة".

هل كانت مفيدة؟

المحلول

أستخدم هذا الكود وهو يعمل بشكل رائع:

System.Xml.XmlDocument xd = new System.Xml.XmlDocument;
xd.Load("http://www.webservice.com/webservice?fXML=1");
string xPath = "/xml/somekey";
// this node's inner text contains "somevalue"
return xd.SelectSingleNode(xPath).InnerText;

يحرر:لقد أدركت للتو أنك تتحدث عن خدمة ويب وليس مجرد XML عادي.في حل Visual Studio الخاص بك، حاول النقر بزر الماوس الأيمن على المراجع في Solution Explorer واختيار "إضافة مرجع ويب".سيظهر مربع حوار يطلب منك عنوان URL، يمكنك فقط لصقه في:"http://www.webservice.com/webservice.asmx".سيقوم VS تلقائيًا بإنشاء جميع المساعدين الذين تحتاجهم.ثم يمكنك فقط الاتصال:

com.webservice.www.WebService ws = new com.webservice.www.WebService();
// this assumes your web method takes in the fXML as an integer attribute
return ws.SomeWebMethod(1);

نصائح أخرى

أعتقد أنه سيكون من المفيد قراءة هذا أولاً:

إنشاء واستخدام خدمة ويب (في الشباك)

هذه سلسلة من البرامج التعليمية حول كيفية استخدام خدمات الويب في .NET، بما في ذلك كيفية استخدام إدخال XML (إلغاء التسلسل).

يمكنك استخدام شيء من هذا القبيل:

var client = new WebClient();
var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection {{"fXML", "1"}});
using (var reader = new StringReader(Encoding.UTF8.GetString(response)))
{
    var xml = XElement.Load(reader);
    var value = xml.Element("somekey").Value;
    Console.WriteLine("Some value: " + value);                
}

لاحظ أنه لم تسنح لي الفرصة لاختبار هذا الرمز، لكنه يجب أن يعمل :)

قد يكون من المفيد أيضًا إضافة أنه إذا كنت بحاجة إلى استخدام POST بدلاً من SOAP على وجه التحديد، فيمكنك تكوين خدمة الويب لتلقي مكالمات POST:

راجع الصفحة على MSDN:خيارات التكوين لخدمات ويب XML التي تم إنشاؤها باستخدام ASP.NET

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top