Я столкнулся с проблемой при создании 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>
То же самое с результатом, когда я меняю фильтр на FunctionCodehttps://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection? $ Filter = Код функции eq 'Z021'
Но когда я ищу с фильтром Phone
https://xxxxxxx.xxx.xxxxxxxx.com/sap/c4c/odata/v1/c4codataapi/CorporateAccountHasContactPersonCollection? $ Filter = Phone eq '+33 123456789'
URL вообще не работает. Это из-за специального символа "+" в номере телефона
Я пробовал использовать $ filter =ndswith (Phone, '123456789'), все работало нормально. Но это не решение, которое я ищу.
Кто-нибудь может предложить другие способы?
Спасибо С Уважением Прат
@AndreF: $ filter = Phone eq '% 2B 123456789', я пробовал это, но не повезло.
Попробуй этот $filter=Phone eq '%2B 33123456789'
или если мы ищем точное соответствие этому $filter=Phone eq '%2B33 123456789'





Причина в том, что эти специальные символы имеют разное значение при использовании в URL-адресах. JavaScript «encodeUri» или «encodeUriComponent» не решает эту проблему.
Вот список специальных символов, которые необходимо заменить при использовании в запросах OData: https://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx
Специальный символ + Указывает на пробел (и пробелы не могут использоваться в URL-адресе), поэтому вам необходимо заменить символ его шестнадцатеричным значением, в данном случае %2B.
Ваш исправленный фильтр должен быть $filter=Phone eq '%2B33 123456789'.
Найдите хорошую статью здесь.
Вы пробовали использовать
%2Bвместо специального символа+в URL-адресе?