[英]RestSharp causes internal server error in ASP.NET Core 3.1
我正在使用 RestSharp 进行 API 调用,但是当我发布数据时,出现内部服务器错误。 这是我的代码。 内容是我正在传递的通用 model。
private async Task<Message<T>> PostAsyncRestSharp<T>(Uri requestUrl, T content)
{
try
{
var client = new RestClient(requestUrl.ToString());
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", content, ParameterType.RequestBody);
IRestResponse response = await client.ExecuteAsync(request);
var resp = response.Content;
return JsonConvert.DeserializeObject<Message<T>>(resp);
}
catch (Exception ex)
{
throw;
}
}
它甚至没有击中 catch 块。
接听电话
接听电话工作正常
private async Task<T> GetAsyncRestSharp<T>(Uri requestUrl, string urlParams)
{
var client = new RestClient($"{requestUrl}?{urlParams}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddParameter("text/plain", "", ParameterType.RequestBody);
IRestResponse response = await client.ExecuteAsync(request);
var resp = response.Content;
return JsonConvert.DeserializeObject<T>(resp);
}
根据 RestSharp 文档,您应该使用.AddJsonBody 方法
我们建议使用 AddJsonBody 或 AddXmlBody 方法,而不是使用 BodyParameter 类型的 AddParameter。 这些方法将设置正确的请求类型并为您完成序列化工作。
当您调用 AddJsonBody 时,它会为您执行以下操作:
- 指示 RestClient 在发出请求时将 object 参数序列化为 JSON
- 将内容类型设置为 application/json
- 将请求正文的内部数据类型设置为 DataType.Json
https://restsharp.dev/usage/parameters.html#request-body
您的代码不起作用,因为您发送的是没有序列化的 T object 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.