我在使用 Pingdoms API 时遇到问题
我为我的应用程序生成了一个密钥并将其添加到我的请求的标题中。但我不断收到 401 错误代码 :(
NetworkCredential nc = new NetworkCredential("my_email", "my_password", "httpS://api.pingdom.com/2.0/checks");
CredentialCache cc = new CredentialCache();
cc.Add("httpS://api.pingdom.com/2.0/checks", 443, "Basic", nc);
HttpWebRequest request = HttpWebRequest)WebRequest.Create("httpS://api.pingdom.com/2.0/checks");
request.Proxy = new WebProxy("my_proxy",true); //I'm behind a strict firewall...
request.Headers.Add("App-Key", "my_appKey");
request.ContentLength = 0;
request.Credentials = cc;
request.PreAuthenticate = true;
request.Method = "POST";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
我很迷茫:(
无论我做什么,我都会得到:
An unhandled exception of type 'System.Net.WebException' occurred in System.dll
Additional information: The remote server returned an error: (401) Unauthorized.
工作代码 感谢@Guy,我让它工作了!这是我的工作代码,适用于遇到同样问题的任何人
public class PingdomChecks
{
public List<PingdomCheck> Checks { get; set; }
}
public class PingdomCheck
{
public string ID { get; set; }
public int Created { get; set; }
public string Name { get; set; }
public string Hostname { get; set; }
public string Resolution { get; set; }
public int LastErrorTime { get; set; }
public int LastTestTime { get; set; }
public int LastResponseTime { get; set; }
public string Status { get; set; }
public string[] Tags { get; set; }
}
public class Tools
{
public static void SetBasicAuthHeader(WebRequest request, String userName, String userPassword)
{
string authInfo = userName + ":" + userPassword;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
request.Headers["Authorization"] = "Basic " + authInfo;
}
public static void Pingdom()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.pingdom.com/api/2.0/checks");
request.Headers.Add("App-Key", "YOUR_APP_KEY");
request.ContentLength = 0;
request.PreAuthenticate = true;
request.Method = "GET";
SetBasicAuthHeader(request, "YOUR_EMAIL", "YOUR_PASSWORD");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var stream = response.GetResponseStream();
var reader = new StreamReader(stream);
var html = reader.ReadToEnd();
PingdomCheck Checks = JsonConvert.DeserializeObject<PingdomCheck>(html);
}
}