c# - 从 C# 中的 Content-Encoding = Gzip / response 获取奇怪的字符
问题描述
我正在使用 C# 访问 API 并获取响应数据,例如:
�y%9z�Pu�i�99��uB�2KRS�KKR����L,I��Z�����]&7��(&��� �O�/�+)�� �+��
API 规范说它适用于 Gzip 内容编码。好吧,如果我使用完全相同的标头从 Postman 或 Powershell(Invoke-RestMethod) 发出请求,我可以清楚地看到 JSON 格式的信息,但不是 C#
public static void Test()
{
using (var client = new System.Net.Http.HttpClient() { BaseAddress = new Uri("https://xxx/") }) {
using (var request_ = new System.Net.Http.HttpRequestMessage())
{
var auth = GetAuthHeader();
var agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36";
request_.Headers.TryAddWithoutValidation("Accept", "application/json");
request_.Headers.TryAddWithoutValidation("Accept-Encoding", "gzip");
request_.Headers.TryAddWithoutValidation("Authorization", auth);
request_.Headers.TryAddWithoutValidation("Customer-Session-Id", Guid.NewGuid().ToString());
request_.Headers.TryAddWithoutValidation("User-Agent", agent);
request_.Method = new System.Net.Http.HttpMethod("GET");
var url_ = "XXX";
request_.RequestUri = new Uri(url_, UriKind.RelativeOrAbsolute);
var response = client.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, System.Threading.CancellationToken.None).Result;
var arr = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(response.ToString());
Console.WriteLine(arr);
}
我需要做一个额外的编码步骤吗?
解决方案
推荐阅读
- html - 在 phpStorm 中定义 (X)HTML 节点代码内容
- android - Android Azure Devops Gradle 构建在签署 apk w zipalign 时失败,退出代码 1
- python - 如何创建密码来保护 python 中的文件?
- c++ - Usage of arrays to generate random numbers
- windows - 远程检查安装的 adobe reader 版本
- python - 在按钮单击从服务器下载文件
- assembly - 汇编 - cmp 指令总是通过
- angular - 有没有办法强制 HttpClient 为请求打开一个新的 TCP 连接?
- azure - Logstash:解析 Azure 事件中心日志
- sql - SQL中如何移动小数位