2012-05-06 6 views
2

J'essaie d'utiliser le service Web DictService à partir d'une application Windows 8 Xaml/C# Metro et j'ai des problèmes.Services Web de WinRT Metro

Le WSDL pour le DictService est http://services.aonaware.com/DictService/DictService.asmx?WSDL

Mais quand j'ajoute la référence de service que je reçois l'avertissement suivant:

avertissement outil personnalisé: Endpoint 'DictServiceSoap12' à l'adresse « http: //services.aonaware .com/DictService/DictService.asmx 'n'est pas compatible avec les applications Windows Metro. Sauter ...

Des idées sur comment je peux passer et utiliser le DictService depuis une application Metro?

Répondre

4

J'ai travaillé sur la façon de faire cela, alors j'ai pensé que je pourrais aussi bien poster un peu de code et répondre à ma propre question ... pourrait aussi être utile pour quelqu'un d'autre qui voudrait appeler un webservice XML 8 application de métro.

public async Task<List<WordDefinition>> GetDefinitions(string word) 
    { 
     try 
     { 
      HttpClient httpclient = new HttpClient(); 
      var dictService = await httpclient.GetStringAsync("http://services.aonaware.com/DictService/DictService.asmx/DefineInDict?DictId=wn&word=" + word); 
      XNamespace ns = "http://services.aonaware.com/webservices/"; 
      var dictInfo = XElement.Parse(dictService); 

      var definitions = dictInfo.Descendants(ns + "Definitions"); 

      List<WordDefinition> defInfo = (from definition in definitions.Descendants(ns + "Definition") 
              select new WordDefinition 
              { 
               Word = definition.Element(ns + "Word").Value, 
               Definition = definition.Element(ns + "WordDefinition").Value 

              }).ToList<WordDefinition>(); 

      return defInfo; 
     } 
     catch (Exception ex) 
     { 
      return new List<WordDefinition>(); 
     } 

    } 

    public class WordDefinition 
    { 
     public string Word { get; set; } 
     public string Definition { get; set; } 
    } 
Questions connexes