c# - HttpClient 从 API 返回 html
问题描述
尝试使用 HttpClient 从 API 获取 json 响应,但不断获取 html 响应。在浏览器和 Postman 中,我只需输入 url 就可以得到 json 格式的结果。使用 RestSharp 时,我也会得到 json 格式的响应。我需要添加什么才能获得 json 中的响应?html 字符串中的变量 responseString,而不是 json 字符串。
我使用 .net 核心 3.1。
这是代码:
class Program
{
static async Task Main(string[] args)
{
var response = await GetResponse();
System.Console.ReadKey();
}
public static async Task<string> GetResponse()
{
var client = new HttpClient();
client.BaseAddress = new Uri("https://musicbrainz.org/ws/2/");
client.DefaultRequestHeaders.Add("Accept",
"application/json");
using var response = await client.GetAsync((
"/artist/5b11f4ce-a62d-471e-81fc-a69a8278c7da?fmt=json&inc=url-rels+release-groups"));
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
}
解决方案
我认为 API 正在寻找用户代理。
尝试添加
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36")
推荐阅读
- android - 如何从任何已安装应用程序的包名称中获取 versionCode?
- javascript - ajax 的加载器?
- windows - Ansible:如何在 Windows 服务中设置恢复选项
- python - pandas:如何保持每组的最后“n”个记录按另一个变量排序?
- firebase - 如何使用 FCM 发送推送通知以响应原生 android 应用程序
- java - java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream
- material-ui - 在 makeStyles (Typescript) 中传播通用样式
- php - 如何在 laravel 的消息中显示文本形式 contact.blade.php
- go - exec.Command 和终端执行结果不同
- python - 为什么邮件不会在 1 点到 2 点之间随机发送?