Невозможно URL-кодировать {} для фильтров объектов в REST URI мягкого слоя

Я вызываю метод Get через Rest, и мой URI содержит { } для фильтров объектов в Softlayer. Я использовал %7B для { и %7D для }, но получаю исключение java.net.URISyntaxException.

URI также содержит @, который я заменил на %40. Это работает. Я использую http Client для выполнения моего Rest Call. URI отлично работает на Postman как с кодировкой URL, так и без нее.


person Ansu    schedule 21.03.2017    source источник


Ответы (1)


Вот два способа пропустить или обработать @:

Другой способ пропустить специальные символы - использовать «\» в начале любого из этих символов, вот пример этого:

Кроме того, необходимо пропустить {}": (специальные символы в objectFilters), если вы продолжаете нажимать исключение, было бы здорово, если бы вы могли предоставить пример или точный код, который вы пытаетесь , для дальнейшей помощи


Как получить виртуальных гостей для определенного центра обработки данных

Вот запрос на отдых для центра обработки данных dal05:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectMask=mask%5Bid%2Chostname%5D&objectFilter=%7B%22virtualGuests%22%3A%7B%22datacenter%22%3A%7B%22name%22%3A%7B%22operation%22%3A%22dal05%22%7D%7D%7D%7D
person Ruber Cuellar Valenzuela    schedule 21.03.2017
comment
Это URL-адрес, к которому я пытаюсь получить доступ. Я пропустил с \ , но мы не можем сделать то же самое для { }. https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectMask=mask[id,hostname]&objectFilter={“virtualGuests” :{“datacenter":{"name":{"operation":"dal05”}}}} - person Ansu; 21.03.2017
comment
Не могли бы вы попробовать запрос, который я разместил в своем ответе, пожалуйста? Дайте мне знать, если у вас есть успех с этим - person Ruber Cuellar Valenzuela; 21.03.2017
comment
%7B для { и %7D для }, я думал, что могу поставить \ for , но он должен быть закодирован с помощью %22 и : с %3A. Спасибо вам за помощь. - person Ansu; 22.03.2017