Как обрабатываются специальные символы в запросе oData? - PullRequest
4 голосов
/ 19 ноября 2010

Как обрабатывается символ & в следующем запросе в oData?

/vendordataservice.svc/vDataMapper_SourceMapVendor?&$filter=startswith(ParentName,'AT&T')&$top=7&$skip=0

Я использую EF3.5 и SQL2008.Когда я отправляю это в службу oData, я не получаю никаких данных.

Ответы [ 2 ]

5 голосов
/ 25 августа 2017

Не используйте «метод JavaScript String replace ()».Он заменит первое появление специальных символов.если у вас есть 2 вхождения одинаковых специальных символов в параметре фильтрации, произойдет сбой.Поэтому используйте регулярное выражение для замены символов.

function replaceSpecialCharacters(attribute) {
  // replace the single quotes
     attribute = attribute.replace(/'/g, "''");

     attribute = attribute.replace(/%/g, "%25");
     attribute = attribute.replace(/\+/g, "%2B");
     attribute = attribute.replace(/\//g, "%2F");
     attribute = attribute.replace(/\?/g, "%3F");

     attribute = attribute.replace(/#/g, "%23");
     attribute = attribute.replace(/&/g, "%26");
     return attribute;
}

Также обратите внимание, поскольку в заменах также содержится %, а затем %; его следует заменить в начале

3 голосов
/ 22 ноября 2010

Вот список символов, которые должны быть закодированы перед отправкой на сервер SQL через HTTP:

http://msdn.microsoft.com/en-us/library/aa226544(SQL.80).aspx

Да, символ '&' является одним из них.

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