2012-03-06 4 views
0

J'essaie de me connecter au service web d'une application CollectiveAccess (elle est basée sur le framework Zend) installée au http://localhost. Selon documentation `on doit authentifier comme ceci:Client REST pour l'API CollectiveAccess

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

et après cela, on peut accéder à l'API par exemple comme ceci:

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

qui fonctionne pour moi si je coller les URL dans un navigateur Web mais je ne peux pas le faire fonctionner en utilisant HTTParty soit les méthodes basic_auth ou digest_auth.

+1

Il y a quelques biscuits qui se passe ici. J'essaierais plutôt de mécaniser. – pguardiario

Répondre

2

Vous devez vous authentifier comme vous le faites, mais assurez-vous que HTTParty conserve le cookie renvoyé par la réponse initiale pendant toute la durée de votre session. basic_auth et digest_auth ne sont pas utilisés par CA - c'est le cookie de session qu'il retourne qui est utilisé pour maintenir l'état de la session.

0

httpclient bijou supporte les cookies de la boîte et les œuvres suivantes fines avec API CollectiveAccess:

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