代码之家  ›  专栏  ›  技术社区  ›  dcp

如何使用XDocument调用web服务?

  •  3
  • dcp  · 技术社区  · 16 年前

    http://localhost/BudgetWeb/Service.asmx

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

    string GetValue(string key)
    

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

    <?xml version=\"1.0\" encoding=\"utf-8\" ?><value>250.00</value>
    

    如果我想这样做怎么办:

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

    这是行不通的,而且我非常确定XDocument.Load实际上不会在服务器上调用web方法。我认为它希望uri指向它可以加载的文件。要调用web方法,我想我必须有一个web代理类,并且必须使用它来调用 string GetValue(string key)

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

    2 回复  |  直到 11 年前
        1
  •  5
  •   Rubens Farias    16 年前

    尝试使用以下方法:

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

    编辑: 刚刚发现:您使用的URI无效:

    http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1
    

    应该是

    http://localhost/BudgetWeb/Service.asmx/GetValue?key=key1
    

    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...
    
        2
  •  3
  •   dcp    16 年前

    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    

    感谢大家的建议,我真的很感激,尤其是鲁本斯·法里亚斯,他的工作榜样让我走上了正确的道路。