C# 通过HttpClient向Saucelabs发送PUT请求未响应
我正试图通过发送C# 通过HttpClient向Saucelabs发送PUT请求未响应,c#,.net,rest,selenium-webdriver,remotewebdriver,C#,.net,Rest,Selenium Webdriver,Remotewebdriver,我正试图通过发送PUT请求来更新作业。但是,下面的代码挂起,我不知道为什么 using (var client = new HttpClient()) { var sessionId = Browser.Driver.GetSessionId(); var uri = new Uri($"https://saucelabs.com/rest/v1/{Configuration.SauceUserName}/jobs/{sessionId}"); var uriWithCr
PUT
请求来更新作业。但是,下面的代码挂起,我不知道为什么
using (var client = new HttpClient())
{
var sessionId = Browser.Driver.GetSessionId();
var uri = new Uri($"https://saucelabs.com/rest/v1/{Configuration.SauceUserName}/jobs/{sessionId}");
var uriWithCred =
new UriBuilder(uri)
{
UserName = $"{Configuration.SauceUserName}",
Password = $"{Configuration.SauceAccessKey}"
}.Uri;
var payload = new StringContent($"{{\"name\":\"{TestMethodName}\"}}", Encoding.UTF8, "application/json");
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = uriWithCred,
Content = payload
};
var response = client.SendAsync(request).Result;
}
以下cUrl请求成功(当然是经过编辑的凭据)
curl-X PUT-s-u:
-d“{\'name\”:\“test name\”}”
https://saucelabs.com/rest/v1//jobs/
为什么此请求挂起?我可以做些什么使其成功?
由于与问题无关的原因,在设置WebDriver的功能时,我无法设置作业的名称
为什么此请求挂起?我可以做些什么使其成功
最有可能的是,在客户机上混合了异步和阻塞调用,如.Result
。SendAsync
方法可能会导致死锁,或者如您所说,会导致代码挂起
考虑使用wait
使方法调用始终异步
public async Task CallAPIAsync() {
using (var client = new HttpClient()) {
var sessionId = Browser.Driver.GetSessionId();
var uri = new Uri($"https://saucelabs.com/rest/v1/{Configuration.SauceUserName}/jobs/{sessionId}");
var uriWithCred =
new UriBuilder(uri) {
UserName = $"{Configuration.SauceUserName}",
Password = $"{Configuration.SauceAccessKey}"
}.Uri;
var payload = new StringContent($"{{\"name\":\"{TestMethodName}\"}}", Encoding.UTF8, "application/json");
var request = new HttpRequestMessage {
Method = HttpMethod.Put,
RequestUri = uriWithCred,
Content = payload
};
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
}
}
假设它挂起等待响应,您是否使用Fiddler(或任何其他工具)来比较两个请求的头(你的代码与cUrl?这对我来说很有效,谢谢!我对.NET中的异步机制没有任何实际经验,你有什么推荐的链接或资源吗?@Muttonchop,这就是我开始使用async/await的地方。作者是该主题的权威。