Ani*_*nil 22 rest json asp.net-web-api
我需要从.NET应用程序访问REST服务,似乎可以使用这两个包中的任何一个来完成.我不清楚应该在哪些场景中使用哪个包.任何人都可以为此带来更多光明吗?
Dav*_*ore 33
简短的回答是肯定的,使用Microsoft.AspNet.WebApi.Client.
https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/
此包添加了对System.Net.Http的格式和内容协商的支持.它包括对JSON,XML和表单URL编码数据的支持.
Microsoft.AspNet.WebApi.Client实际上依赖于Microsoft.Net.Http,并扩展了HttpClient一些您可能需要与REST服务(如ASP.NET Web API(例如JSON和XML支持))交谈的功能.
这两个包都在System.Net.Http命名空间中运行,并围绕密钥HttpClient类.
该Microsoft.AspNet.WebApi.Client软件包包含System.Net.Http.Formatting.dll程序集,它为HttpClient和HttpContent(以及其他)添加了一些方便的扩展方法.
例如:
using (var client = new HttpClient())
{
var response = await client.GetAsync("http://localhost/foo/api/products/1");
response.EnsureSuccessStatusCode();
var product = await response.Content.ReadAsAsync<ProductInfo>();
}
Run Code Online (Sandbox Code Playgroud)
该ReadAsAsync方法是一种Microsoft.AspNet.WebApi.Client添加到HttpContent对象上的扩展方法.这会自动确定响应是否为JSON,XML或表单URL编码(上述内容协商),然后使用相应的格式化程序将其反序列化为强类型模型(在本例中ProductInfo).
如果您尝试使用Microsoft.Net.Http,则无法使用ReadAsAsync方法,并且您只能将内容读取为原始数据(如字节或字符串),并且必须执行序列化/反序列化自己.
您还可以使用JSON或XML将PUT/POST扩展方法返回到服务,而无需自己执行此操作:
// Save the ProductInfo model back to the API service
await client.PutAsJsonAsync("http://localhost/foo/api/products/1", product);
Run Code Online (Sandbox Code Playgroud)
关键Microsoft.AspNet.WebApi.Client扩展:
https://msdn.microsoft.com/en-US/library/system.net.http.httpclientextensions.aspx https://msdn.microsoft.com/en-US/library/system.net.http.httpcontentextensions.aspx
| 归档时间: |
|
| 查看次数: |
8026 次 |
| 最近记录: |