【发布时间】:2021-01-27 04:47:01
【问题描述】:
我在这里完全不知所措。代码本身通常有效。然而,每隔一段时间我就会遇到这个相当神秘的“成功”错误。重新启动似乎有帮助,但现在即使这样似乎也不起作用。我不知道如何获得有关如何解决此问题的更多信息。 Url 始终相同,并且我已验证“BasicCreds”正在返回正确的信息(即与它工作时相同)。任何想法如何进一步排除故障或这个“错误”应该意味着什么?
以防万一:我总是在代理后面并 ping Jazz RTC 服务器。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", BasicCreds());
try
{
using (WebResponse response = request.GetResponse()) // immediate exception for success (sometimes)
{
【问题讨论】:
-
我可以在这里做的第一件事 - 使用
HttpClient而不是古老的HttpWebRequest。 -
@aepot,等效代码是什么?身份验证失败: HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", BasicCreds()); var 结果 = client.GetAsync(url);
-
1)
var result = await client.GetAsync(url)或更好的using(var response = await client.GetAsync(url)) { ... }- 欢迎来到 Asynchronous Programming 2) 猜测 cred 必须另外使用 Base64 编码。 StackOverflow 包含许多HttpClient的示例,包括身份验证,但它可以特定于您的服务器。 -
3)
BasicCreds()返回什么?"Basic <creds>"?然后new AuthenticationHeaderValue("Basic", BasicCreds());并更改方法以返回不带前缀Basic的凭据。 -
@aepot,似乎做到了!不知道为什么 HttpWebRequest 如此挑剔,但更新到 HttpClient 似乎有效。至少,现在......谢谢!随意将其作为答案,我会接受。
标签: c# webrequest system.net.webexception