HttpClient 抛出 System.ArgumentException:'windows-1251' 不是受支持的编码名称

     2023-03-06     162

关键词:

【中文标题】HttpClient 抛出 System.ArgumentException:\'windows-1251\' 不是受支持的编码名称【英文标题】:HttpClient throws System.ArgumentException: 'windows-1251' is not a supported encoding nameHttpClient 抛出 System.ArgumentException:'windows-1251' 不是受支持的编码名称 【发布时间】:2015-07-26 14:22:05 【问题描述】:

我正在编写 WinPhone 8.1 应用程序。 代码非常简单,在大多数情况下都有效:

string htmlContent;
using (var client = new HttpClient())

    htmlContent = await client.GetStringAsync(GenerateUri());

_htmlDocument.LoadHtml(htmlContent);

但有时会抛出异常

htmlContent = await client.GetStringAsync(GenerateUri());

InnerException System.ArgumentException: 'windows-1251' 不是 支持的编码名称。参数名称:名称在 System.Globalization.EncodingTable.internalGetCodePageFromName(字符串 名称)在 System.Globalization.EncodingTable.GetCodePageFromName(字符串名称) 在 System.Net.Http.HttpContent.c__DisplayClass1.b__0(任务 任务) System.Exception System.ArgumentException

HttpClient 是否支持 1251 编码?如果没有,我该如何避免这个问题?还是目标页面问题?还是我做错了什么?

【问题讨论】:

【参考方案1】:

IBuffer 获取响应,然后使用 .NET 编码类进行转换:

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(uri);
IBuffer buffer = await response.Content.ReadAsBufferAsync();
byte[] bytes = buffer.ToArray();

Encoding encoding = Encoding.GetEncoding("windows-1251");
string responseString = encoding.GetString(bytes, 0, bytes.Length);

【讨论】:

非常感谢,它有效!唯一的区别是:byte[] bytes = await response.Content.ReadAsByteArrayAsync(); @HarrySmith 或者更简单的var bytes = await client.GetByteArrayAsync(uri);

无限超时的 HttpClient 抛出超时异常

】无限超时的HttpClient抛出超时异常【英文标题】:HttpClientwithinfinitetimeoutthrowstimeoutexception【发布时间】:2017-08-0902:39:12【问题描述】:我的HttpClient使用摘要身份验证连接到服务器并期望搜索查询作为响应。这些搜索查询可以随... 查看详情

HttpClient.SendAsync 方法退出而不抛出异常

】HttpClient.SendAsync方法退出而不抛出异常【英文标题】:HttpClient.SendAsyncmethodexitswithoutthrowingexception【发布时间】:2016-11-0806:22:18【问题描述】:我正在调用以下函数来获取访问令牌,以便使用RESTApi检索Twitter用户配置文件。publica... 查看详情

Windows.Web.Http.HttpClient 抛出 COMException c#

】Windows.Web.Http.HttpClient抛出COMExceptionc#【英文标题】:Windows.Web.Http.HttpClientthrowsCOMExceptionc#【发布时间】:2018-07-0207:40:19【问题描述】:我在我的UWPWindows10应用中使用Windows.Web.Http.HttpClient。我在我的应用程序中创建了HttpClient的单... 查看详情

HttpClient 抛出“发送请求时发生错误。”

】HttpClient抛出“发送请求时发生错误。”【英文标题】:HttpClientthrowing"Anerroroccurredwhilesendingtherequest."【发布时间】:2020-08-2223:30:57【问题描述】:我有三层应用架构。我的客户-->我的服务A(REST托管在IIS中)-->其他... 查看详情

未设置 TransferEncodingChunked 时 HttpClient 抛出 OutOfMemory 异常

】未设置TransferEncodingChunked时HttpClient抛出OutOfMemory异常【英文标题】:HttpClientthrowsOutOfMemoryexceptionwhenTransferEncodingChunkedisnotset【发布时间】:2017-02-1918:50:22【问题描述】:为了支持上传带有进度报告的大型(实际上非​​常大,... 查看详情

C# HttpClient 在没有成功状态代码时抛出异常 [关闭]

】C#HttpClient在没有成功状态代码时抛出异常[关闭]【英文标题】:C#HttpClientthrowsExceptiononnoSucessStatusCodes[closed]【发布时间】:2017-05-2214:31:45【问题描述】:我遇到了一个非常奇怪的问题。当我请求的网页返回的状态代码不是2**状... 查看详情

HttpClient 抛出 System.ArgumentException:'windows-1251' 不是受支持的编码名称

】HttpClient抛出System.ArgumentException:\\\'windows-1251\\\'不是受支持的编码名称【英文标题】:HttpClientthrowsSystem.ArgumentException:\'windows-1251\'isnotasupportedencodingnameHttpClient抛出System.ArgumentException:\'windows-1251\'不是受支持的编码 查看详情

HttpClient 抛出 ssl 错误,但 webview 和 HttpsURLConnection 不会

】HttpClient抛出ssl错误,但webview和HttpsURLConnection不会【英文标题】:HttpClientthrowssslerrorbutwebviewandHttpsURLConnectiondon\'t【发布时间】:2017-08-2218:23:04【问题描述】:所以我使用服务器(google-app-engine)在客户端应用程序上进行身份验证... 查看详情

Xamarin.Forms 中的 HttpClient 抛出“发送请求时发生错误。”

】Xamarin.Forms中的HttpClient抛出“发送请求时发生错误。”【英文标题】:HttpClientinXamarin.Formsthrowing"Anerroroccurredwhilesendingtherequest."【发布时间】:2021-06-2913:47:37【问题描述】:我使用Xamarin.Forms在Windows(UWP)和Android上开发多平... 查看详情

httpClient Symfony 中的 Json 选项抛出错误

】httpClientSymfony中的Json选项抛出错误【英文标题】:JsonoptioninhttpClientSymfonythrowerror【发布时间】:2022-01-1313:55:52【问题描述】:我在symfony上使用httpClient,我正在调用一个API我想使用json选项而不是使用body但它不起作用,当我使... 查看详情

Xamarin Forms HttpClient PostAsync 总是抛出 NSMallocException

】XamarinFormsHttpClientPostAsync总是抛出NSMallocException【英文标题】:XamarinFormsHttpClientPostAsyncalwaysthrowNSMallocException【发布时间】:2021-11-2210:38:01【问题描述】:我们正在使用XamarinForms5和VisualStudio2022为iOS和Android构建一个移动应用程序... 查看详情

httpClient 在从 azure 反向代理调用 https 连接时抛出连接重置

】httpClient在从azure反向代理调用https连接时抛出连接重置【英文标题】:httpClientthrowsConnectionresetwhileinvokinghttpsconnectionfromazurereverseproxy【发布时间】:2021-03-0114:53:45【问题描述】:实际上,我有配置为重定向到keycloak的saml应用程... 查看详情

JSoup.connect 抛出 403 错误,而 apache.httpclient 能够获取内容

】JSoup.connect抛出403错误,而apache.httpclient能够获取内容【英文标题】:JSoup.connectthrows403errorwhileapache.httpclientisabletofetchthecontent【发布时间】:2012-04-2415:18:58【问题描述】:我正在尝试解析任何给定页面的HTML转储。我使用了HTMLPars... 查看详情

HTTPClient-java.net.SocketException:未实现未连接的套接字抛出

】HTTPClient-java.net.SocketException:未实现未连接的套接字抛出【英文标题】:HTTPClient-java.net.SocketException:Unconnectedsocketsnotimplementedthrown【发布时间】:2009-11-1522:19:02【问题描述】:我正在使用HTTPClient4.0连接远程服务器并使用HTTPS传... 查看详情

C# HttpClient.SendAsync 在测试某些 URL 时抛出“发送请求时发生错误”异常

】C#HttpClient.SendAsync在测试某些URL时抛出“发送请求时发生错误”异常【英文标题】:C#HttpClient.SendAsyncthrow"Anerroroccurredwhilesendingtherequest"exceptionwhentestingsomeURLs【发布时间】:2015-10-0409:39:49【问题描述】:我正在开发一个C#... 查看详情

HttpClient->GetStringAsync() 为 https Uris 抛出 0x000006F4

】HttpClient->GetStringAsync()为httpsUris抛出0x000006F4【英文标题】:HttpClient->GetStringAsync()throws0x000006F4forhttpsUris【发布时间】:2017-05-1020:24:33【问题描述】:如果我使用httpURI,下面的代码对我来说可以正常工作,但对于等效的https... 查看详情

Apache HTTPClient 抛出 java.net.SocketException:许多域的连接重置

】ApacheHTTPClient抛出java.net.SocketException:许多域的连接重置【英文标题】:ApacheHTTPClientthrowsjava.net.SocketException:Connectionresetformanydomains【发布时间】:2011-03-1204:32:43【问题描述】:我正在创建一个(行为良好的)网络蜘蛛,我注意... 查看详情

HttpClient - 任务被取消?

】HttpClient-任务被取消?【英文标题】:HttpClient-Ataskwascancelled?【发布时间】:2015-03-2106:15:49【问题描述】:当有一个或两个任务时它可以正常工作,但是当我们列出多个任务时会抛出错误“任务已取消”。List<Task>allTasks=newL... 查看详情