参考 Flurl Serializers 它表明 Flurl 4.0 可以使用基于 Newtonsoft 的序列化器,但我不清楚如何针对单个请求执行此操作。我需要这个来解决我的请求中的循环错误。
这是执行此操作的示例代码
public static async Task<bool> TransferData(Data data, string firmSuffix)
{
try
{
var (webApiUrl, accessToken) = await GetWebApiUrlAndToken(firmSuffix);
if (string.IsNullOrWhiteSpace(accessToken))
{
return false;
}
// this is needed when serializing classes to prevent circular loop error
Newtonsoft.Json.JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
var result = await Flurl.Url.Combine(webApiUrl, "/Api/AddData")
.WithOAuthBearerToken(accessToken)
.WithSettings(settings =>
{ settings.JsonSerializer = new Flurl.Http.Newtonsoft.NewtonsoftJsonSerializer(); })
.PostJsonAsync(data);
return result.StatusCode == 200;
}
catch (FlurlHttpException ex)
{
Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return false;
}