2014-09-17 2 views
1

Я создаю HTTP-адаптер для получения информации об активах в IBM Rational Asset Manager (RAM) через свой REST API. Я могу получить все активы в оперативной памяти сHTTP-адаптер Worklight - параметры со специальными символами

https://<server>/tools/cm/ram/oslc/simpleQuery 

Это прекрасно работает в браузере, используя RESTClient в Firefox и от моего адаптера при вызове с

var input = { 
    method : 'get', 
    returnedContentType : 'xml', 
    path : 'tools/cm/ram/oslc/simpleQuery' 
}; 

return WL.Server.invokeHttp(input); 

Проблема в том, что я получаю сотни активов в мой ответ. Я хотел бы, чтобы отфильтровать ответ от RAM, используя запрос, как

https://<server>/tools/cm/ram/oslc/simpleQuery?query=ram_asset:community="My Community" 

Это отлично работает в браузере или RESTClient.

Но когда я добавить параметр запроса на мой адаптер с

var input = { 
    method : 'get', 
    returnedContentType : 'xml', 
    path : 'tools/cm/ram/oslc/simpleQuery', 
    parameters : {"query" : 'ram_asset:community="My Community"' 
}; 

return WL.Server.invokeHttp(input); 

RAM не возвращает активы. Это заставляет меня думать, что параметры не добавляются в URI правильно. Я подозреваю, что это может быть потому, что в запросе есть специальные символы (':' и '='). Я пробовал кодирование с% 3A и% 3D без везения.

Per предложения от других пользователей, я также попробовал, включая параметры запроса непосредственно на пути с кодировкой, но все еще не получает ничего вернулось из памяти:

var input = { 
    method : 'get', 
    returnedContentType : 'xml', 
    path : 'tools/cm/ram/oslc/simpleQuery?query=ram_asset:community%3D%22My+Community%22' 
}; 

Возможно ли, что адаптер WL не обрабатывает параметры правильно? Любые идеи о том, как обойти это?

+0

Я попытался бы отправить параметры, как описано в ответе на этот вопрос: http://stackoverflow.com/questions/25600168/send-request-with-parameter-ibm-worklight –

+0

Эта помощь полна? path: "tools/cm/ram/oslc/simpleQuery? query = ram_asset: community = 'My Community'". в переменной ввода – dhineshsundar

+0

Если это ваш путь, то да. Это работает...? –

ответ

1

Я, наконец, разработал решение. Значение поиска, необходимое для двойных кавычек - ОЗУ не принимало бы одинарные кавычки. Конечным решением было params = {query: 'ram_asset:community="My Community"'};

Если вы думаете: «Разве это не то, с чем он начал?», Вы правы. У меня также была красная селедка, которая отбрасывала меня, потому что мое сообщество только позволяет аутентифицированным пользователям видеть в нем активы. Мой сеанс браузера Firefox был аутентифицирован, но адаптера Worklight не было, что объясняет, почему браузер и RESTClient видели мои активы, а адаптер - нет. Есть и другие общественные сообщества, поэтому адаптер видел активы, а не мои. Когда я разрешил пользователям, не прошедшим проверку подлинности, видеть активы в моем сообществе, адаптер начал их видеть.

Смежные вопросы