假设我在以下地址有一个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方法?
试着用这个:
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)