【问题标题】:C# - Consuming REST web service over httpsC# - 通过 https 使用 REST Web 服务
【发布时间】:2009-08-11 11:46:19
【问题描述】:

在 C# 中使用安全 REST Web 服务的最佳方式是什么? Web 服务用户名和密码在 URL 中提供...

【问题讨论】:

  • 采用 URL 中提供的用户名和密码的 Web 服务不安全。

标签: c# web-services rest https


【解决方案1】:

几个选项:

HttpWebRequest 类。功能强大但有时使用起来很复杂。

WebClient 类。功能较少,但应该适用于更简单的 Web 服务,而且更简单。

WCF REST Starter Kit 中的新 HttpClient。 (入门工具包是单独下载的,不是 .NET Framework 的一部分)。

【讨论】:

    【解决方案2】:

    使用 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 中可用。

    【讨论】:

      【解决方案3】:

      我希望 URL 中的密码是经过加密的 :)。也许这会对你有所帮助:

      http://social.msdn.microsoft.com/forums/en-US/wcf/thread/3c8db0bf-984e-426b-b068-d80165ed1b37/

      【讨论】:

        【解决方案4】:

        根据您提供的少量信息,我会说使用 HttpWebRequest 类是您的最佳选择。

        它相对容易使用,有很多如何使用它的示例,它适用于 REST 接口提供的任何媒体类型。您可以完全访问 Http 状态代码和 Http Headers。

        你还能要求什么?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-25
          • 1970-01-01
          • 2017-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-09
          • 2018-03-31
          相关资源
          最近更新 更多