C# HttpClient从API返回html

C# HttpClient从API返回html,c#,.net,.net-core,dotnet-httpclient,C#,.net,.net Core,Dotnet Httpclient,尝试使用HttpClient从API获取json响应,但继续获取html响应。在浏览器和Postman中,我只需输入url,就可以得到json格式的结果。使用RestSharp时,我也会得到json格式的响应。我需要添加什么才能获得json格式的响应?变量responseString是html字符串,而不是json字符串 我使用.NETCore3.1 代码如下: class Program { static async Task Main(string[] args) {

尝试使用HttpClient从API获取json响应,但继续获取html响应。在浏览器和Postman中,我只需输入url,就可以得到json格式的结果。使用RestSharp时,我也会得到json格式的响应。我需要添加什么才能获得json格式的响应?变量responseString是html字符串,而不是json字符串

我使用.NETCore3.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;
    }
}
类程序
{
静态异步任务主(字符串[]args)
{
var response=等待GetResponse();
System.Console.ReadKey();
}
公共静态异步任务GetResponse()
{
var client=新的HttpClient();
client.BaseAddress=新Uri(“https://musicbrainz.org/ws/2/");
client.DefaultRequestHeaders.Add(“接受”,
“应用程序/json”);
使用var response=await client.GetAsync((
“/artist/5b11f4ce-a62d-471e-81fc-a69a8278c7da?fmt=json&inc=url rels+发行组”);
response.EnsureSuccessStatusCode();
var responseString=await response.Content.ReadAsStringAsync();
回报率;
}
}

作为一个旁注,您可能需要考虑将您的<代码> HTTPcli客< /代码>声明为静态。建议在中使用。另外,如果需要json,则需要使用以下方法:

var result=JsonConvert.DeserializeObject(responseString);
您只需确保已从Nuget软件包安装了
Newtonsoft.Json
,并使用
指令将以下内容添加到

using Newtonsoft.Json;

我认为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")

检查
responseString
是否是某个在线json解析器中的有效json字符串。如果是,您将无法获得html。您需要将其反序列化为具体对象。问题澄清了,响应是html格式的,而不是json格式的。您可以共享html响应吗?您可以使用
WebClient
类吗?它对我很有效,还删除了client.GetAsync(
“艺术家/5b11f4ce-a62d-471e-81fc-a69a8278c7da?fmt=json&inc=url rels+发行组”