Проблема при отправке запроса с арабскими символами через API - PullRequest
0 голосов
/ 05 июля 2019

Я не могу отправить запрос с арабскими символами через API.Я пытаюсь отправить запрос из CS-Cart в Quickbooks Online.

Я пытался отправить запрос, используя следующие арабские буквы:

select * from Customer Where DisplayName = 'احمد عبدالعزيز'

он возвращает:

{
 "responseHeader": {
  "status": 400,
  "message": "Bad Request",
  "intuitTid": "2dbec1fd-5dc1-3a14-4a12-7c338db0ee2a",
  "realmID": "123146420719144"
 },
 "response": {
  "Fault": {
   "Error": [
    {
     "Message": "Error parsing query",
     "Detail": "QueryParserError: Invalid content. Lexical error at line 1, column 45.  Encountered: \"\\u0627\" (1575), after : \"\\'\"",
     "code": "4000"
    }
   ],
   "type": "ValidationFault"
  },
  "time": "2019-07-04T07:09:03.026-07:00"
 }
}

И если я попробую его после кодирования имени и отправлю запрос следующим образом:

select * from Customer Where DisplayName = '%D8%A7%D8%AD%D9%85%D8%AF+%D8%B9%D8%A8%D8%AF%D8%A7%D9%84%D8%B9%D8%B2%D9%8A%D8%B2'

, то ничего не вернется:

{
 "QueryResponse": {},
 "time": "2019-07-04T07:09:42.698-07:00"
}

Я ожидаю получитьнапример:

{
 "QueryResponse": {
  "Customer": [
   {
    "Taxable": false,
    "BillAddr": {
     "Id": "924",
     "Country": "Saudi Arabia"
    },
    "ShipAddr": {
     "Id": "925",
     "Country": "Saudi Arabia"
    },
    "Job": false,
    "BillWithParent": false,
    "Balance": 157.5,
    "BalanceWithJobs": 157.5,
    "CurrencyRef": {
     "value": "SAR",
     "name": "Saudi Riyal"
    },
    "PreferredDeliveryMethod": "None",
    "IsProject": false,
    "domain": "QBO",
    "sparse": false,
    "Id": "577",
    "SyncToken": "0",
    "MetaData": {
     "CreateTime": "2019-07-01T06:37:32-07:00",
     "LastUpdatedTime": "2019-07-01T06:37:33-07:00"
    },
    "GivenName": "Ramil",
    "FamilyName": "Gilaev",
    "FullyQualifiedName": "Ramil Gilaev",
    "DisplayName": "Ramil Gilaev",
    "PrintOnCheckName": "Ramil Gilaev",
    "Active": true,
    "PrimaryPhone": {
     "FreeFormNumber": "123456789"
    }
   }
  ],
  "startPosition": 1,
  "maxResults": 1
 },
 "time": "2019-07-05T02:12:35.562-07:00"
}

Также я заметил, что даже если запрос написан на английском языке, результат будет тот же.

select * from Customer Where DisplayName = 'Ahmed Al-Khuraisir'

Результат:

{
 "QueryResponse": {},
 "time": "2019-07-05T03:31:11.149-07:00"
}

Пожалуйстапроверьте прикрепленные изображения.

Снимок экрана 1

Снимок экрана 2

...