调用Xero Contacts API POST接口时遇无效JSON错误求助
排查Xero Contacts POST接口"Invalid Json data"错误
核心问题:请求格式冲突
你的代码里设置了AlwaysMultipartFormData = true,但同时指定了content-type: application/json,这会导致请求体被错误编码,Xero无法识别JSON格式。
修复代码
移除AlwaysMultipartFormData = true的设置,RestRequest会根据AddBody的内容和指定的content-type自动处理请求格式:
public static async Task<string> SaveContact(string tenant_id, string contact) { string result = ""; string url = "https://api.xero.com/api.xro/2.0/contacts"; string key = string.Format("Bearer {0}", Token); var client = new RestClient(url); var request = new RestRequest(Method.Post); request.AddHeader("authorization", key); request.AddHeader("Xero-tenant-id", tenant_id); request.AddHeader("content-type", "application/json"); request.AddBody(contact, "application/json"); var response = await client.ExecuteAsync(request); result = response.Content; if(response.StatusCode == HttpStatusCode.OK) { return "OK"; } return result; }
额外潜在问题:JSON中的冗余内容
除了请求格式问题,你的JSON里还有可能触发校验的内容:
AddressLine2填了两个空格,建议改为空字符串""- POBOX地址所有字段为空,建议直接移除这个空地址对象,或者填充必要字段
PhoneNumber开头有空格,建议清理为"011 852 2589"
验证步骤
- 先修复代码中的
AlwaysMultipartFormData设置 - 清理JSON中的冗余空格和空对象
- 用Postman等工具先测试修正后的JSON,确认格式合法后再用代码调用
内容的提问来源于stack exchange,提问作者zdb
相关产品推荐
相关产品推荐

