在C#中连接到Web服务

时间:2015-08-12 14:03:14

标签: c# webrequest

我正在尝试连接位于here的洛克希德马丁公司的网络服务。我查看了其他示例,并使用以下代码尝试建立连接。此时我想知道的是,如果我已建立连接并获得授权,但我反复得到一个例外

  

未经授权在System.Net.HttpWebRequest.GetResponse()

。我是否正确设置了网络请求和响应?是否有一种不同的方法可以让我知道我是否已成功连接?

            try
        {
            //Connect to the Lockheed Martin web client

            WebRequest client = WebRequest.Create("https://www.elabs.testafss.net/Website2/ws");
            string username = "username";
            string password = "password";
            string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(username + ":" + password));
            client.Headers.Add("Authorization", "Basic " + credentials);
            WebResponse response = client.GetResponse();
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }

1 个答案:

答案 0 :(得分:0)

可能您的用户/密码不正确,查看Web服务的文档,您的代码正在复制以下示例中完全相同的哈希:

身份验证 - 基本身份验证

使用Basic Auth协议执行身份验证。每个Web服务请求都提供了一个授权标头。这有时被称为先发制人认证。标题看起来像这样:
Authorization: Basic Vendor_ID:Vendor_Password
其中Vendor_ID:Vendor_Password字符串转换为Base64。

实施例

Authorization: Basic JoesFlightServices:SecretPW
转换为Base64:
Authorization: Basic Sm9lc0ZsaWdodFNlcnZpY2VzOlNlY3JldFBX
请注意,转换为Base64并不能确保信息是私有的。我们使用HTTPS来加密整个HTTP消息,包括标题。

Source