【发布时间】:2009-08-11 11:46:19
【问题描述】:
在 C# 中使用安全 REST Web 服务的最佳方式是什么? Web 服务用户名和密码在 URL 中提供...
【问题讨论】:
-
采用 URL 中提供的用户名和密码的 Web 服务不安全。
标签: c# web-services rest https
在 C# 中使用安全 REST Web 服务的最佳方式是什么? Web 服务用户名和密码在 URL 中提供...
【问题讨论】:
标签: c# web-services rest https
几个选项:
HttpWebRequest 类。功能强大但有时使用起来很复杂。
WebClient 类。功能较少,但应该适用于更简单的 Web 服务,而且更简单。
WCF REST Starter Kit 中的新 HttpClient。 (入门工具包是单独下载的,不是 .NET Framework 的一部分)。
【讨论】:
使用 WebRequest 类发出请求,使用 HttpWebResponse 获取响应。
我使用以下代码来消费webservice。我的用户名、密码和Url分别保存在变量UserName、Pwd和Url中。
WebRequest Webrequest;
HttpWebResponse response;
Webrequest = WebRequest.Create(Url);
byte[] auth1 = Encoding.UTF8.GetBytes(UserName + ":" + Pwd);
Webrequest.Headers["Authorization"] = "Basic " + System.Convert.ToBase64String(auth1);
Webrequest.Method = "GET";
Webrequest.ContentType = "application/atom+xml";
response = (HttpWebResponse)Webrequest.GetResponse();
Stream streamResponse = response.GetResponseStream();
StreamReader streamReader = new StreamReader(streamResponse);
string Response = streamReader.ReadToEnd();
响应字符串将在变量 Response 中可用。
【讨论】:
我希望 URL 中的密码是经过加密的 :)。也许这会对你有所帮助:
http://social.msdn.microsoft.com/forums/en-US/wcf/thread/3c8db0bf-984e-426b-b068-d80165ed1b37/
【讨论】:
根据您提供的少量信息,我会说使用 HttpWebRequest 类是您的最佳选择。
它相对容易使用,有很多如何使用它的示例,它适用于 REST 接口提供的任何媒体类型。您可以完全访问 Http 状态代码和 Http Headers。
你还能要求什么?
【讨论】: