web-dev-qa-db-fra.com

Ruby - Envoyer une requête GET avec en-têtes

J'essaie d'utiliser Ruby avec l'api d'un site Web. Les instructions sont d'envoyer une demande GET avec un en-tête. Ce sont les instructions du site Web et l'exemple de code php qu'ils donnent. Je suis à calculer un hachage HMAC et l'inclure sous un en-tête apisign.

$apikey='xxx';
$apisecret='xxx';
$nonce=time();
$uri='https://bittrex.com/api/v1.1/market/getopenorders?apikey='.$apikey.'&nonce='.$nonce;
$sign=hash_hmac('sha512',$uri,$apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($ch);
$obj = json_decode($execResult);

J'utilise simplement un fichier .rb avec Ruby installé sur Windows à partir de l'invite de commande. J'utilise net/http dans le fichier Ruby. Comment puis-je envoyer une demande GET avec un en-tête et imprimer la réponse?

8
user4584963

En utilisant net/http comme le suggère la question.

Les références:

Ainsi, par exemple:

require 'net/http'    

uri = URI("http://www.Ruby-lang.org")
req = Net::HTTP::Get.new(uri)
req['some_header'] = "some_val"

res = Net::HTTP.start(uri.hostname, uri.port) {|http|
  http.request(req)
}

puts res.body # <!DOCTYPE html> ... </html> => nil

Remarque: si votre response a état de résultat HTTP 301 (déplacé en permanence), voir Ruby Net :: HTTP - redirections 301 suivantes

14
metaphori

Installez httparty gem, cela facilite les requêtes, puis dans votre script

require 'httparty'

url = 'http://someexample.com'
headers = {
  key1: 'value1',
  key2: 'value2'
}

response = HTTParty.get(url, headers: headers)
puts response.body

puis exécutez votre .rb fichier..

7
Md. Farhan Memon