我已经尝试过同样的 HttpWebRequest 它工作正常但我需要为我的程序使用 HttpClient 到目前为止我做了以下代码但它返回未经授权
string baseurl = "http://xxxxx.net/";
var byteArray = Encoding.ASCII.GetBytes("myusername:mypassword");
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");
webclient.BaseAddress = new Uri(baseurl);
webclient.DefaultRequestHeaders.Clear();
webclient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
Run Code Online (Sandbox Code Playgroud)
问题在这里:
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");
Run Code Online (Sandbox Code Playgroud)
第二个是覆盖第一个,因此基本身份验证不会发生。如果您想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");
Run Code Online (Sandbox Code Playgroud)
我"=" +从代码中删除了,因为=是自动添加的。但如果=它实际上是您的 API 密钥的一部分,则将其添加回来。
| 归档时间: |
|
| 查看次数: |
6828 次 |
| 最近记录: |