我正在尝试连接位于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);
}
答案 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消息,包括标题。