【发布时间】:2020-07-30 21:00:03
【问题描述】:
如何使用 RestSharp 客户端连接到 Ambari 的 Swagger 界面?
此代码有效并返回预期的 json:
HttpClientHandler handler = new HttpClientHandler
{
Credentials = new System.Net.NetworkCredential("xxx", "yyyyy")
};
using (var httpClient = new HttpClient(handler))
{
var activationUrl = "https://aaaa.azurehdinsight.net";
var uri = new Uri(activationUrl + "/api/v1/users");
var response = await httpClient.GetAsync(uri);
Assert.IsTrue(response.IsSuccessStatusCode);
var result = await response.Content.ReadAsStringAsync();
}
此代码不起作用并返回 406 NotAcceptable:
var client = new RestSharp.RestClient("https://aaaa.azurehdinsight.net/api/v1/");
var credentials = new System.Net.NetworkCredential("xxx", "yyyy");
client.Authenticator = new NtlmAuthenticator(credentials);
client.DefaultParameters.Clear();
var request = new RestSharp.RestRequest("users", RestSharp.Method.GET);
var response = await client.ExecuteAsync<string>(request);
如果我调整密码,它会返回未经授权,所以我知道我正在验证。 我认为诀窍是制作像 HttpClient 这样的 RestSharp 属性。 这就是我删除标题的原因:
client.DefaultParameters.Clear();
【问题讨论】:
-
我相信凭据正确传递,所以它是另一回事。您有权访问服务器日志吗?为什么会返回 406?