REST-клиент для CollectiveAccess API - PullRequest
0 голосов
/ 06 марта 2012

Я пытаюсь подключиться к веб-сервису приложения CollectiveAccess (оно основано на платформе Zend), установленного на http://localhost.В соответствии с документацией `необходимо пройти проверку подлинности следующим образом:

http://localhost/ca5/service.php/iteminfo/ItemInfo/rest?method=auth&username=admin&password=123456

и после этого можно получить доступ к API, например, следующим образом:

http://localhost/service.php/iteminfo/ItemInfo/rest?method=getLabels&type=ca_objects&item_id=4&mode=all

Это работает длямне, если я вставляю URL-адреса в веб-браузер, но не могу заставить его работать, используя HTTParty, либо basic_auth, либо digest_auth.

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Вам нужно пройти аутентификацию, как вы делаете, но убедитесь, что HTTParty поддерживает cookie, который первоначальный ответ возвращает в течение жизни вашего сеанса. basic_auth и digest_auth не используются CA - именно тот cookie-файл сеанса, который он возвращает, используется для поддержания состояния сеанса.

0 голосов
/ 08 марта 2012

httpclient gem поддерживает файлы cookie "из коробки", а с CollectiveAccess API хорошо работает следующее:

require 'httpclient'
clnt = HTTPClient.new
clnt.set_cookie_store('/home/user/cookie.dat')
puts clnt.get('http://localhost/service.php/iteminfo/ItemInfo/rest?method=auth&username=administrator&password=12345').body
puts clnt.get('http://localhost/service.php/iteminfo/ItemInfo/rest?method=getLabels&type=ca_objects&item_id=4&mode=all').body
...