调用TMDB Discover接口时RestSharp返回text/html而非JSON如何解决?
首先排查并修复以下几个问题即可解决:
1. 修正请求路径
TMDB的discover/movie接口对路径格式要求严格,你当前代码里路径末尾多了一个斜杠,会触发API返回404错误页面(也就是你拿到的text/html内容),把路径末尾的斜杠删掉:
// 修正前 var client = new RestClient($"{_settings.TMDBhost}/discover/movie/"); // 修正后 var client = new RestClient($"{_settings.TMDBhost}/discover/movie");
同时确认你的_settings.TMDBhost配置值正确,完整的TMDB接口前缀应该带版本号,不要漏了/3后缀。
2. 增加HTTP状态校验
你当前代码没有判断接口返回的状态是否正常,直接反序列化响应内容,遇到错误时无法定位问题,增加状态校验逻辑:
//Calling Api var response = client.Get(request); // 增加状态校验 if (!response.IsSuccessful) { // 这里可以输出response.StatusCode和response.Content方便排查 throw new Exception($"TMDB接口请求失败,状态码:{response.StatusCode},响应内容:{response.Content}"); }
3. 明确指定Accept请求头
主动声明要求接口返回JSON格式,避免API默认返回其他格式:
//Init rest request var request = new RestRequest(Method.GET); request.RequestFormat = DataFormat.Json; // 新增Accept头 request.AddHeader("Accept", "application/json");
4. 校验sort参数合法性
TMDB的sort_by参数要求必须是字段.排序方向的格式,比如popularity.desc(按热度降序)、vote_average.asc(按评分升序),如果传入的参数不符合规则,也会触发API返回错误响应。
修改完成后如果还有问题,可以通过上面加的校验逻辑输出的状态码和响应内容定位具体错误。
内容的提问来源于stack exchange,提问作者goransb5
相关产品推荐
相关产品推荐

