WebApiClient 不支持将 ContentType 为的内容反序列化为 xXx 的解决方案

通过 WebApiClient 调用第三方接口时,可能会遇到如下异常些信息:

[EXCEPTION]
WebApiClient.ApiReturnNotSupportedExteption: 不支持将ContentType为的内容反序列化为 
Volo.AjaxResponse`1[System.Collections.Generic.List`1[Volo.ProjectDto]]
    如果实际返回的内容为Xml,请为方法声明XmlReturnAttribute
    如果实际返回的内容为Json,请为方法声明JsonReturnAttribute
       at WebApiClient.Attributes.AutoReturnAttribute.GetTaskResult(ApiActionContext context)
       at WebApiClient.Contexts.ApiActionContext.ExecHttpRequestAsync()
       at WebApiClient.Contexts.ApiActionContext.ExecRequestAsync()
       at WebApiClient.Contexts.ApiActionContext.ExecuteActionAsync[TResult]()

注意异常信息中的这两句话:

    如果实际返回的内容为Xml,请为方法声明XmlReturnAttribute
    如果实际返回的内容为Json,请为方法声明JsonReturnAttribute

[JsonReturn]
[HttpPost("/volo/v2/listAllByUser.action")]
Task<AjaxResponse<List<ProjectDto>>> GetProject([FormContent]ProjectInput input);

因为当前接口返回的数据为 JSON,给 GetProject 方法加上 [JsonReturn] 注解后即可避免。

说到这里顺便提一下关于接口返回数据类型,需要提前线下沟通,对于接口对接效率有显著提高。

原文地址:https://www.cnblogs.com/fxck/p/13076621.html