У меня возникла проблема при создании 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'
FunctionCode
Но когда я ищу с фильтром Phone
Phone
https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection?$filter=Phone eq '+33 123456789'
URL не работает вообще. Это из-за специального символа "+" в номере телефона
Я пыталсяс $ filter = заканчивается с (телефон, «123456789»), он работал нормально.Но это не решение, которое я ищу.
Кто-нибудь может предложить другие способы?
Спасибо С уважением, Прат
Причина в том, что эти специальные символы имеют различное значение при использовании в URL. JavaScript «encodeUri» или «encodeUriComponent» не решает эту проблему.
Вот список специальных символов, которые необходимо заменить при использовании в запросах OData: https://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx
Специальный символ + Обозначает пробел (и пробелы нельзя использовать в URL), поэтому вам необходимо заменить символ на его шестнадцатеричное значение, в данном случае %2B.
+
%2B
Ваш исправленный фильтр должен быть $filter=Phone eq '%2B33 123456789'.
$filter=Phone eq '%2B33 123456789'
Найдите хорошую статью здесь .