asp.net核心无法从url获取xml数据

时间:2017-04-28 08:30:06

标签: c# asp.net xml amazon-web-services asp.net-core

我使用Amazon API生成ItemLookup请求。签署请求后,我得到了一个网址:

http://webservices.amazon.com/onca/xml?AWSAccessKeyId=[AccessKey]&AssociateTag=[AssociateTag]&ItemId=B06XBCY6DW&Operation=ItemLookup&ResponseGroup=Images%2CItemAttributes%2COffers%2CReviews&Service=AWSECommerceService&Timestamp=2050-02-13T12:00:00Z&Version=2016-02-12&Signature=[Signature]

我在浏览器中使用的,我可以看到带有项目数据的不错的xml,但是当我尝试用c#获取该数据时,我得到错误

  

Uri参数必须是文件系统相对路径或绝对路径。

我用来获取数据的方法是:

var itemXml = XElement.Load(url);

如何在c#??

中获取该xml

1 个答案:

答案 0 :(得分:3)

这不是.net核心特定的。

XElement.Load接受一个字符串 - 如果你看一下intellisense状态:

  

从文件加载XElement。

这不是你想要的。它正在尝试从文件系统中解析URI。

您需要将URL内容读入Stream。

尝试以下

var httpClient = new HttpClient();
var result = httpClient.GetAsync(url).Result;

var stream = result.Content.ReadAsStreamAsync().Result;

var itemXml = XElement.Load(stream);

注意我已使用.Result - 我建议改为使用await(异步/等待)模式