我已经尝试使用HttpWebRequest进行相同的工作,但是我需要在程序中使用HttpClient 到目前为止,我确实遵循了以下代码,但是未经授权返回了
updateItem(newItem){
for (let i = 0; i < this.itemsArray.length; i++) {
if(this.itemsArray[i].id == newItem.id){
this.users[i] = newItem;
}
}
}
答案 0 :(得分:3)
问题在这里:
webclient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
webclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("X-ApiKey", "=" + "5AB4374B-A5CF-4F7A-91FF-E5E893347C3F");
第二个覆盖第一个,因此基本身份验证没有发生。如果要在请求中包括X-ApiKey
标头以及使用基本身份验证,则不要使用DefaultRequestHeaders.Authorization
来设置X-ApiKey
标头。而是使用DefaultRequestHeaders.Add
,它使您可以添加所需的任何HTTP标头:
webclient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
webclient.DefaultRequestHeaders.Add("X-ApiKey", "5AB4374B-A5CF-4F7A-91FF-E5E893347C3F");
由于"=" +
是自动添加的,因此我从代码中删除了=
。但是,如果=
实际上是您的API密钥的一部分,则将其重新添加。
答案 1 :(得分:0)
仍然,我收到未授权的错误,但Web请求工作正常
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.Headers["X-ApiKey"] = "5AB4374B-A5CF-4F7A-91FF-E5E893347C3F";
String encoded = Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("myusername" + ":" + "mypassword"));
httpWebRequest.Headers.Add("Authorization", "Basic " + encoded);