来自 WinRT Metro 的 Web 服务
本文关键字:Web 服务 Metro WinRT 来自 | 更新日期: 2023-09-27 18:33:16
我正在尝试从Windows 8 Xaml/C# Metro应用程序使用DictService Web服务,但遇到了问题。
DictService 的 WSDL 是 http://services.aonaware.com/DictService/DictService.asmx?WSDL
但是当我添加服务引用时,我收到以下警告:
自定义工具警告:地址"http://services.aonaware.com/DictService/DictService.asmx"处的终结点"DictServiceSoap12"与 Windows Metro 风格的应用不兼容。 正在跳过...
关于如何克服这个问题并从地铁应用程序中使用DictService的任何想法?
我弄清楚了如何做到这一点,所以我想我不妨发布一些代码并回答我自己的问题......对于有兴趣从 Windows 8 Metro 应用调用 XML Web 服务的任何其他人来说,也可能很有用。
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; }
}