You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HttpClient.GetStringAsync请求lyricsify.com返回空字符串问题排查

问题分析与解决方案

核心原因:请求头缺失导致网站返回空内容

很多网站会通过验证请求头里的User-Agent、Accept等字段判断请求来源,默认HttpClient的请求头标识比较特殊(比如HttpClient/.NET),会被lyricsify.com识别为非浏览器请求,从而返回空内容——这就是你用Insomnia、PowerShell能正常获取,但代码里不行的原因。

解决方法:给HttpClient添加模拟浏览器的请求头

修改代码,为HttpClient配置符合浏览器标准的请求头即可:

[Fact]
public async Task HttpClientTest() // 注意:单元测试中建议用async Task替代async void,避免异步等待问题
{
    var httpClient = new HttpClient();
    // 添加模拟Chrome浏览器的请求头
    httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
    httpClient.DefaultRequestHeaders.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");

    string googleResponse = await httpClient.GetStringAsync("https://www.google.com");
    Debug.WriteLine($"googleResponse: {googleResponse}");
    Assert.NotEmpty(googleResponse);

    string lyricsifyResponse = await httpClient.GetStringAsync("https://www.lyricsify.com");
    Debug.WriteLine($"lyricsifyResponse: {lyricsifyResponse}");
    Assert.NotEmpty(lyricsifyResponse);
}

额外注意事项

  1. 单元测试异步方法签名:你的原代码用了async void,这会导致测试框架无法正确等待异步操作完成,建议改成async Task。
  2. 其他潜在问题:如果添加请求头后仍无效,可以检查是否需要处理Cookie(部分网站会要求携带初始会话Cookie),或者确认HttpClient是否启用了内容压缩(默认已启用,无需额外配置)。

内容的提问来源于stack exchange,提问作者mihca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:10:13