J'ai remplacé : post "/", :query => params , :body => headers par post "/", :query => params , :*headers* => headers Même résultat
Le 21 novembre 2011 18:08, Frédérick Sauvage <[email protected]>a écrit : > En tâtonnant, j'arrive à : > > # encoding : utf-8 > > require 'base64' > require 'rubygems' > require 'httparty' > > class Timestamp > > # SOURCE : https://www.universign.eu/fr/web-services > > =begin > > > static InputStream doTsp(String login, String pwd, String hash, String > algo) > throws Exception > { > URLConnection conn = new URL("https://ws.universign.eu/tsa/post/ > ").openConnection(); > > conn.setDoOutput(true); > conn.setDoInput(true); > String authString = login + ":" + pwd; > String authStringEnc = Base64.encode(authString); > conn.setRequestProperty("Authorization", "Basic " + > authStringEnc); > > OutputStream out = conn.getOutputStream(); > String params = "hashAlgo=" + URLEncoder.encode(algo, "UTF-8") + > "&hashValue=" > + URLEncoder.encode(hash, "UTF-8") + "&withCert=" + > URLEncoder.encode("false", "UTF-8"); > out.write(params.getBytes("UTF-8")); > out.flush(); > > return conn.getInputStream(); > } > =end > include HTTParty > #hash = "test pour universign" > def self.doTsp(login="toto", > pwd="titi",hash="cb493b4f9c0bda24f0443a11dad75b3a04aec8b78440c193eea4857e4d6f8725",algo="SHA256") > > authString = login + ":" + pwd > authStringEnc = Base64.encode64(authString) > base_uri "https://ws.universign.eu/tsa/post/" > headers "Authorization" => "Basic " + authStringEnc > params = {"hashAlgo" => CGI::escape(algo), "hashValue" => > CGI::escape(hash), "withCert" => CGI::escape("false") } > post "/", :query => params , :body => headers > end > > end > > Je pense être proche du but car j'obtiens : > => #<HTTParty::Response:0x8 @parsed_response=nil, > @response=#<Net::HTTPUnauthorized 401 J readbody=true>, > @headers={"cache-control"=>["no-cache"], "pragma"=>["no-cache"], > "content-type"=>["application/octet-stream"], > "transfer-encoding"=>["chunked"], "www-authenticate"=>["Basic > realm=\"Universign\""]}> > avec ce login et mot de passe. > Mais aucune réponse avec les bons login/mot de passe. Si tout va bien, il > ne me manque que l'équivalent de conn.getInputStream() que je n'ai pas > trouvé. > > Le 21 novembre 2011 17:31, Bruno Muscolino <[email protected]> a écrit > : > > J'utilise ce même code pour me connecter aux WS de ma banque. >> >> :) >> >> Have fun >> Bruno >> >> On Nov 21, 2011, at 11:29 AM, Frédérick Sauvage wrote: >> >> Oui je cherches à utiliser leur WebService ... je vais essayer de me >> débrouiller avec cela et la doc de httparty tant bien que mal >> >> Le 21 novembre 2011 17:10, Bruno Muscolino <[email protected]> a >> écrit : >> >>> En gros ce que tu cherches a faire c'est de te connecter sur leur page >>> et utiliser leur WebServices? >>> >>> En ruby: (voir doc do httparty pour determiner ou non si tu veux qqch >>> dans la hash query) >>> >>> require 'rubygems' >>> require 'httparty' >>> >>> class LoginSomeWhere >>> include HTTParty >>> base_uri "https://YOURURL.COM" >>> headers "content-type" => "application/x-www-form-urlencoded" >>> >>> def self.login username, password >>> post "/", :query => { }, :body => { :username => username, :password >>> => password } >>> end >>> end >>> >>> puts LoginSomeWhere.login "username", "password" >>> >>> Ca >>> >>> On Nov 21, 2011, at 10:06 AM, Frédérick Sauvage wrote: >>> >>> > Bonjour, >>> > >>> > Cherchant à créer un sceau d'horodatage via Universign, je me retrouve >>> > face à 3 codes pour réaliser cela ... évidemment nulle trace de Ruby. >>> > Je cherche actuellement comment m'adapter au Ruby (en partant du Java >>> > que je maitrise mieux), mais je rencontre des difficultés. >>> > >>> > Une bonne âme pourrait-elle m'aider ? >>> > >>> > Voici les différents codes : >>> > >>> > En Python : >>> > >>> > #!/usr/bin/python >>> > >>> > import urllib; >>> > import urllib2; >>> > import hashlib; >>> > import base64; >>> > >>> > # first we construct the parameters for the request >>> > data = {}; >>> > data['hashAlgo'] = "SHA256"; >>> > data['withCert'] = "true"; >>> > data['hashValue'] = hashlib.sha256(dataToTimestamp).hexdigest(); >>> > params = urllib.urlencode(data); >>> > >>> > # basic HTTP authentication is needed to access this service >>> > headers = {}; >>> > auth = base64.encodestring(username + ":" + password); >>> > headers["Authorization"] = "Basic " + auth; >>> > >>> > # then the request itself >>> > request = urllib2.Request("https://ws.universign.eu/tsa/post/", >>> > params, headers); >>> > >>> > # all is ready, the request is made >>> > response = urllib2.urlopen(request); >>> > tsp = response.read(); >>> > >>> > >>> > >>> > En PHP : >>> > >>> > $hashedDataToTimestamp = hash('sha256', $dataToTimestamp); >>> > $dataToSend = array ('hashAlgo' => 'SHA256', 'withCert' => >>> > 'true', 'hashValue' => $hashedDataToTimestamp); >>> > $dataQuery = http_build_query($dataToSend); >>> > $context_options = array ( >>> > 'http' => array ( >>> > 'method' => 'POST', >>> > 'header'=> "Content-type: application/x-www-form- >>> > urlencoded\r\n" >>> > ."Content-Length: " . strlen($dataQuery) . "\r\n" >>> > ."Authorization: Basic ".base64_encode($login.':'. >>> > $password)."\r\n", >>> > 'content' => $dataQuery >>> > ) >>> > ); >>> > >>> > $context = stream_context_create($context_options); >>> > $fp = fopen("https://ws.universign.eu/tsa/post/", 'r', false, >>> > $context); >>> > $tsp = stream_get_contents($fp); >>> > >>> > >>> > >>> > En Java : >>> > >>> > static InputStream doTsp(String login, String pwd, String hash, >>> > String algo) >>> > throws Exception >>> > { >>> > URLConnection conn = new URL("https://ws.universign.eu/tsa/ >>> > post/").openConnection(); >>> > conn.setDoOutput(true); >>> > conn.setDoInput(true); >>> > String authString = login + ":" + pwd; >>> > String authStringEnc = Base64.encode(authString); >>> > conn.setRequestProperty("Authorization", "Basic " + >>> > authStringEnc); >>> > >>> > OutputStream out = conn.getOutputStream(); >>> > String params = "hashAlgo=" + URLEncoder.encode(algo, "UTF-8") >>> > + "&hashValue=" >>> > + URLEncoder.encode(hash, "UTF-8") + "&withCert=" + >>> > URLEncoder.encode("false", "UTF-8"); >>> > out.write(params.getBytes("UTF-8")); >>> > out.flush(); >>> > >>> > return conn.getInputStream(); >>> > } >>> > >>> > >>> > Merci d'avance, >>> > Frédéric >>> > >>> > -- >>> > Vous avez reçu ce message, car vous êtes abonné au groupe >>> "Railsfrance" de Google Groups. >>> > Pour transmettre des messages à ce groupe, envoyez un e-mail à >>> l'adresse [email protected] >>> > Pour résilier votre abonnement envoyez un e-mail à l'adresse >>> [email protected] >>> >>> -- >>> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >>> de Google Groups. >>> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >>> [email protected] >>> Pour résilier votre abonnement envoyez un e-mail à l'adresse >>> [email protected] >> >> >> >> >> -- >> SAUVAGE Frédéric >> >> >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> [email protected] >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> [email protected] >> >> >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> [email protected] >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> [email protected] >> > > > > -- > SAUVAGE Frédéric > > -- SAUVAGE Frédéric -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected]
