注意:此问题与this one类似,但其建议的答案并不适用于此处。
我正在尝试访问this API,它正在寻找一个如下所示的标题:
Authorization: {token}
请注意,缺少任何身份验证方案。
我尝试过:
myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("", authToken);
导致ArgumentException表示我无法传递空字符串。
我也试过了两个:
myHttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(authToken);
和
myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
两者都会导致FormatException。
似乎有些事情迫使我遵从我的授权标题的标准格式,但我尝试访问的服务并没有使用该标准格式。
答案 0 :(得分:7)
你可以尝试:
request.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token));
如https://msdn.microsoft.com/en-us/library/hh875106(v=vs.118).aspx
中所述答案 1 :(得分:3)
似乎经常发生这种情况,在我提出问题之后我就找到了答案。
HttpClinet给我的标准格式是Http协议本身,它需要一个身份验证方案,但是有一个解决办法。
而不是:
myHttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
您可以使用:
myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", authToken);
这会忽略Http标准,只是让你根据需要添加标题。