Pergunta

I am trying to connect to webservice of a CollectiveAccess app (it is based on Zend framework) installed at http://localhost . According to documentation` one should authenticate like this:

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

and after that, one can access API for instance like this:

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

That works for me if I paste URLs in a web browser but I cannot get it to work using HTTParty either basic_auth or digest_auth methods.

Foi útil?

Solução

You need to authenticate as you are doing, but make sure HTTParty maintains the cookie that initial response returns for the life of your session. basic_auth and digest_auth are not used by CA - it's that session cookie it returns that is used to maintain session state.

Outras dicas

httpclient gem supports cookies out of the box and the following works fine with 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top