ODATA: специальный символ в URL - PullRequest
0 голосов
/ 02 января 2019

У меня возникла проблема при создании URL-адреса ODATA.

Для следующего URL-адреса:

https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection?$filter=AccountID eq '1000024'

Результат:

- <m:properties>
    <d:ObjectID>00163E10AD0B1ED686EF458B4E8C51D5</d:ObjectID> 
    <d:ParentObjectID>00163E10AD201EE5A4F0B592DE751AE8</d:ParentObjectID
    <d:AccountID>1000024</d:AccountID> 
    <d:ContactID>1002636</d:ContactID>
    <d:FunctionCode>Z021</d:FunctionCode> 
    <d:Mobile>+33 123456789</d:Mobile> 
    <d:Phone>+33 987654321</d:Phone> 
  </m:properties>

То же самое для результата, когда я меняю фильтр на FunctionCode https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection?$filter=FunctionCode eq 'Z021'

Но когда я ищу с фильтром Phone

https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection?$filter=Phone eq '+33 123456789'

URL не работает вообще. Это из-за специального символа "+" в номере телефона

Я пыталсяс $ filter = заканчивается с (телефон, «123456789»), он работал нормально.Но это не решение, которое я ищу.

Кто-нибудь может предложить другие способы?

Спасибо С уважением, Прат

1 Ответ

0 голосов
/ 02 января 2019

Причина в том, что эти специальные символы имеют различное значение при использовании в URL. JavaScript «encodeUri» или «encodeUriComponent» не решает эту проблему.

Вот список специальных символов, которые необходимо заменить при использовании в запросах OData: https://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx

Специальный символ + Обозначает пробел (и пробелы нельзя использовать в URL), поэтому вам необходимо заменить символ на его шестнадцатеричное значение, в данном случае %2B.

Ваш исправленный фильтр должен быть $filter=Phone eq '%2B33 123456789'.

Найдите хорошую статью здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...