2012-06-18 5 views
5

Ruby için oldukça yeni. Çevrimiçi belgelere bakmayı denedim, ancak oldukça işe yarayan hiçbir şey bulamadım. Aşağıdaki HTTP isteklerine bir Kullanıcı Aracısı eklemek istiyorum, get_response() ve get(). Birisi bana doğru yönde işaret edebilir mi?Kullanıcı Aracısı, Ruby

# Preliminary check that Proggit is up 
    check = Net::HTTP.get_response(URI.parse(proggit_url)) 
    if check.code != "200" 
    puts "Error contacting Proggit" 
    return 
    end 

    # Attempt to get the json 
    response = Net::HTTP.get(URI.parse(proggit_url)) 
    if response.nil? 
    puts "Bad response when fetching Proggit json" 
    return 
    end 
+0

Bu sorunun sizin için bir çözüm olduğunu düşünüyorum: http://www.dzone.com/snippets/send-custom-headers-ruby VEYA http://stackoverflow.com/questions/587559/ruby-how-to-make -an-http-get-with-değiştirilmiş başlıkları – nhahtdh

cevap

9

Amir F doğrudur, sen misin RestClient veya Faraday gibi başka bir HTTP istemcisi kullanmanın keyfini çıkarabilir, ancak standart Ruby kitaplığı ile uğraşmak isterseniz kullanıcı aracınızı şu şekilde ayarlayabilirsiniz:

url = URI.parse(proggit_url) 
req = Net::HTTP::Get.new(proggit_url) 
req.add_field('User-Agent', 'My User Agent Dawg') 
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } 
res.body 
+0

Teşekkürler! Bu işe yaramış gibi görünüyor! – hodgesmr

+0

Ruby 1.9.3 üzerinde, eğer 'add_field' bunu böyle yaparsam, 'Ruby, Kullanıcı Aracım Dawg' gibi bir kullanıcı aracıyla sonuçlanırım –

1

Net::HTTP çok düşük seviyeli, ben rest-client gem kullanarak öneriyoruz - kendiliğinden o da şu olacak yönlendirmeleri ve yani çalışmak için daha kolay olabilir:

require 'rest_client' 

response = RestClient.get proggit_url 
if response.code != 200 
    # do something 
end