带有SDK和OAuth v2的Xero出现错误的请求错误

问题描述

我有一个问题,我无法完全了解使用哪种.net编码方法来设置上述字段。这是我的代码

Contact Contact = null;
Contacts Contacts = null;
List<Contact> ContactsList = null;

ContactsList = new List<Contact>();
Contacts = new Contacts();

//no error
Contact.BankAccountDetails = "detew";

//400 Bad Request error
Contact.BankAccountDetails = "&ew";

//I have tried encoding using:

System.Uri.EscapeDataString
System.Security.SecurityElement.Escape
System.Net.WebUtility.HtmlEncode
System.Xml.XmlConvert.EncodeName
System.Web.HttpUtility.HtmlEncode
System.Web.HttpUtility.UrlEncode
System.Web.HttpUtility.HtmlAttributeEncode

//But nothing works.

//This is the passed xml with error:

Xero.NetStandard.OAuth2.Client.ApiException: 'Xero API 400 error calling UpdateContact :{
  "ErrorNumber": 10,"Type": "ValidationException","Message": "A validation exception occurred","Elements": [
    {
      "ContactID": "89d59636-6524-47b2-b047-0000000000000","ContactNumber": "Cust_4","AccountNumber": "Cust_4","ContactStatus": "ACTIVE","Name": "cpName","FirstName": "MyCustomerFirstName2","LastName": "MyCustomerLastName1","EmailAddress": "sfgdg@sdfs.lo","SkypeUserName": "","BankAccountDetails": "bkname&amp; bankacname sortcode accnumber bicswift iban","UpdatedDateUTC": "\/Date(1604408524790)\/","ContactGroups": [],"Issupplier": false,"IsCustomer": false,"ContactPersons": [],"HasAttachments": false,"HasValidationErrors": true,"ValidationErrors": [
        {
          "Message": "The BankAccountDetails field cannot be more than 50 characters long."
        }
      ]
    }
  ]
}'

按照线程How can I transform string to UTF-8 in C#?转换为UTF8(https://community.xero.com/developer/discussion/32311#answer32331)也不起作用。

也许我需要将Content-Type设置为xml,但是不确定如何使用Xero DSK来完成。建立连接时也许通过XeroConfiguration?

谢谢。

解决方法

问题不是编码,但是在我的实际代码中,我使用了一个更大的字符串来设置BankAccountDetails,却没有意识到,每当我对其进行更改以添加特殊的char时,都使用一个较长的字符串来设置它超过该字段的最大长度。现在工作正常。谢谢大家。