【发布时间】:2021-09-04 20:00:37
【问题描述】:
我正在尝试使用 TMDB API 构建微服务。
代码:
using System.Text.Json;
using Microsoft.Extensions.Options;
using Net5Micro.Config;
using RestSharp;
namespace Net5Micro.Services
{
public class ApiClient : IApiClient
{
private readonly ServiceSettings _settings;
public ApiClient(IOptions<ServiceSettings> settings)
{
_settings = settings.Value;
}
public Movie GetById(string id)
{
//Init rest client
var client = new RestClient($"{_settings.TMDBhost}/movie/{id}");
//Init rest request
var request = new RestRequest(Method.GET);
request.RequestFormat = DataFormat.Json;
//Add Request params
request.AddParameter("api_key", _settings.ApiKey, ParameterType.GetOrPost);
//Calling Api
var response = client.Get(request);
var movies = JsonSerializer.Deserialize<Movie>(response.Content);
return movies;
}
// Za najpopularnije
public Movies Discover(string sort)
{
//Init rest client
var client = new RestClient($"{_settings.TMDBhost}/discover/movie/");
//Init rest request
var request = new RestRequest(Method.GET);
request.RequestFormat = DataFormat.Json;
//Add Request params
request.AddParameter("api_key", _settings.ApiKey, ParameterType.GetOrPost);
request.AddParameter("sort_by", sort, ParameterType.GetOrPost);
//Calling Api
var response = client.Get(request);
var movies = JsonSerializer.Deserialize<Movies>(response.Content);
return movies;
}
public record Movie(int id, string original_title, string poster_path);
public record Movies(int page, Movie[] results);
}
}
GetById() 工作正常,但Discover() 会引发错误。在调试时我发现返回的值是text/html 而不是 json;我认为这就是问题所在。
这是错误
发生异常:CLR/System.Text.Json.JsonException
System.Text.Json.dll 中出现“System.Text.Json.JsonException”类型的异常,但未在用户代码中处理:“输入不包含任何 JSON 令牌。当 isFinalBlock 为真时,预期输入以有效的 JSON 令牌开头。路径:$ |行号:0 | BytePositionInLine: 0。'
发现内部异常,详情请参阅变量窗口中的 $exception。
最里面的异常
System.Text.Json.JsonReaderException :输入不包含任何 JSON 标记。当 isFinalBlock 为真时,预期输入以有效的 JSON 令牌开头。行号:0 | BytePositionInLine: 0。在 System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource 资源, Byte nextByte, ReadOnlySpan
1 bytes) at System.Text.Json.Utf8JsonReader.Read() at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state))
我是 .NET 的新手,所以我不知道如何解决它。提前致谢。
【问题讨论】: