Я использую SoapUI для отправки URI в веб-службу WCF C# (не REST), которая использует десериализатор по умолчанию для DTO, аннотированный DataContract ([DataContract (NameSpace = ") mynamespace ")]C# DataContract Deserialization URI с несколькими ключевыми словами = значениями
URI, может содержать несколько ключ = значение терминов в их компоненте запроса:. Пример: lookfor://3904?foo=this & that&bar=6
Если я UrlEncode "этот & что", но не кодировать & между 2 , то я получу объявление ошибка eserialization с сервера из-за некодированного разделителя амперсандов.
Если я urlencode весь URI, то оба амперсанда будут закодированы как% 26. Веб-служба не сможет определить, какие амперсанды являются разделителями для ключей = значения и которые являются частями значений, и код не будет работать.
Я мог бы потребовать, чтобы амперсанды использовались для разграничения пар значений ключей, которые кодируются как
&
, а остальные символы получают стандартную кодировку URLlookfor://3904?foo%3Dthis%20%26%20that&bar%3D6
.&
будет десериализован как амперсанд. Я мог бы отложить urldecoding до тех пор, пока не разделит часть запроса URI с помощью & в качестве разделителя (чтобы получить мои ключевые значения).
Является ли это стандартным профессиональным способом решения этой проблемы? У меня есть googled и googled, и я не могу найти примеров, связанных с URI с несколькими ключевыми значениями.
Альтернативой может быть двойное кодирование амперсандов в значениях и одиночная кодировка амперсандов, которые являются разделителями, но я видел предупреждения (в то время как Google), чтобы никогда не кодировать двойное кодирование.
Вы должны использовать синтаксис уценки, чтобы сделать ваш вопрос легче читать. Текст встроенного окружения с одиночными обратными окнами, \. Например, \ 'code \' будет отображаться как 'code'. Вы можете использовать это для вывода '&' без его экранирования. См. Здесь для получения дополнительной информации: https://daringfireball.net/projects/markdown/syntax – zshift
Как вы объявили параметры своей конечной точки? Вы видели это: https://www.soapui.org/rest-testing/understanding-rest-parameters.html? – SiKing
Это для веб-службы WCF/SOAP, а не службы REST. – Janet