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] 注解后即可避免。
说到这里顺便提一下关于接口返回数据类型,需要提前线下沟通,对于接口对接效率有显著提高。