c# – 通过HttpClient向Paucelabs发送PUT请求没有响应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 通过HttpClient向Paucelabs发送PUT请求没有响应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1837字,纯文字阅读大概需要3分钟。
内容图文
![c# – 通过HttpClient向Paucelabs发送PUT请求没有响应](/upload/InfoBanner/zyjiaocheng/789/f50de0050ec34ff98bdf99113d924f0a.jpg)
我试图发送一个PUT请求通过their API更新Saucelabs上的作业.但是,以下代码挂起,我不知道为什么.
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 <username>:<access-key>
-d "{\"name\": \"test name\"}"
https://saucelabs.com/rest/v1/<username>/jobs/<job-id>
为什么这个请求会挂起,我该怎么做才能使它成功?
由于与问题无关的原因,我无法在设置WebDriver的功能时设置作业的名称.
解决方法:
Why does this request hang and what can I do to make it successful?
很可能是在客户端上混合了异步和阻塞调用,如.Result.SendAsync方法可能会导致死锁,或者当你放置它时,导致代码挂起.
考虑使用await使方法调用异步.
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();
}
}
内容总结
以上是互联网集市为您收集整理的c# – 通过HttpClient向Paucelabs发送PUT请求没有响应全部内容,希望文章能够帮你解决c# – 通过HttpClient向Paucelabs发送PUT请求没有响应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。