我正在尝试从我的 .NET 应用程序使用 REST API。这个API都是用JAVA编写的。 系统要求我通过 HTTP 标头传递身份验证凭据。如何通过 HTTP 标头传递这些身份验证凭据,例如“日期”、“授权”和“接受”。
我可以使用 .NET 中的哪个类来完成此任务。谁能帮我解决这个问题吗?
更新
该库现已被 http://nuget.org/packages/Microsoft.Net.Http/2.1.10
取代使用 WCF REST Starter Kit Preview 2 中的 Microsoft.Http 客户端库。
以下是如何使用它:
var client = new HttpClient();
client.DefaultHeaders.Authorization = new Credential("ArbitraryAuthHeader");
client.DefaultHeaders.Date = DateTime.Now;
client.DefaultHeaders.Accept.Add("application/xml");
var response = client.Get("http://example.org");
var xmlString = response.Content.ReadAsString();
只是为了给这个线程添加一点价值(我也在寻找一种使用 RESTful 服务并轻松提供凭据的方法,并遇到了这个线程......我没有“日期”要求),Aaron Skonnard 有写了一篇关于使用 WCF REST Starter Kit 的优秀文章,名为:
有一个内容非常丰富的部分介绍了如何使用 HttpClient 使用 RESTful 服务。 这是与 Twitter 对话的代码片段:
HttpClient http = new HttpClient("http://twitter.com/statuses/");
http.TransportSettings.Credentials =
new NetworkCredential("{username}", "{password}");
HttpResponseMessage resp = http.Get("friends_timeline.xml");
resp.EnsureStatusIsSuccessful();
ProcessStatuses(resp.Content.ReadAsStream());
有多种方法可以做到这一点,但如果您只需完成几次调用,那么使用 WebRequest 对象是最快的。
这个网站,对整个过程有很好的概述。
尽管其名称有些误导性,ADO.NET Data Services(它是 .NET 3.5 的一部分)包含用于公开和使用基于 REST 的服务的 API。在您的情况下,您可以安全地忽略允许您公开服务的部分并专注于客户端部分。
它支持 LINQ 和各种优点,允许您像这样查询 REST 服务:
var selectedOrders = from o in context.Orders
where o.Freight > 30
orderby o.ShippedDate descending
select o;
还有更多相关信息这里。尝试一下 - 到目前为止我对此非常满意。