如何使用XDocument调用Web服务?

dcp*_*dcp 3 c# asmx

假设我在以下地址有一个asmx Web服务: http://localhost/BudgetWeb/Service.asmx

此Web服务具有带以下签名的Web方法:

string GetValue(string key)
Run Code Online (Sandbox Code Playgroud)

此GetValue方法返回如下字符串:

<?xml version=\"1.0\" encoding=\"utf-8\" ?><value>250.00</value>
Run Code Online (Sandbox Code Playgroud)

如果我想这样做怎么办:

XDocument doc = XDocument.Load("http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1")
Run Code Online (Sandbox Code Playgroud)

这不起作用,我很确定XDocument.Load实际上并没有在服务器上调用Web方法.我认为它希望uri指向一个可以加载的文件.要调用Web方法,我想我必须有一个Web代理类,并且必须使用它来调用string GetValue(string key),然后我可以使用从Web代理类返回的值传递给XDocument.Load方法.

我的理解是否正确,或者XDocument.Load是否有办法在服务器上实际调用Web方法?

Rub*_*ias 5

试着用这个:

XDocument doc = XDocument.Load(
        "http://localhost/BudgetWeb/Service.asmx/GetValue?key=key1");
Run Code Online (Sandbox Code Playgroud)

编辑:刚想通了:你使用的是无效的URI:

http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1
Run Code Online (Sandbox Code Playgroud)

应该

http://localhost/BudgetWeb/Service.asmx/GetValue?key=key1
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码段:

string uri = "http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=MSFT";
XDocument doc1 = XDocument.Load(uri);
Console.WriteLine(doc1.Root.Value);  // <StockQuotes><Stock><Symbol>MSFT...
Run Code Online (Sandbox Code Playgroud)