У меня есть URL-адрес json, предоставленный sendgrid.Все это должно быть тронуто.Как бы я это сделал?
def suspend @user = User.find(params[:id]) @user.update_attribute("suspended", true) # the url I need to touch => https://sendgrid.com/api/unsubscribes.add.xml?api_user=username%40website.com&api_key=secret_password&email=#{@user.email} end
Вы можете использовать Net::HTTP.get из стандартной библиотеки (см. документы ):
Net::HTTP.get
require 'net/http' Net::HTTP.get URI("https://sendgrid.com/api/unsubscribes.add.xml?api_user=username%40website.com&api_key=secret_password&email=#{@user.email}")
Обновлено:
Для HTTPS вы можетесделать что-то вроде этого:
require "net/https" uri = URI.parse("https://www.google.com") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri.request_uri) # request = Net::HTTP::Head.new(uri.request_uri) - get response without body response = http.request(request)
Хорошая статья по этому вопросу - Ruby Net :: Шпаргалка HTTP .
Установить httpclient gem
HTTPClient.get("https://sendgrid.com/api/unsubscribes.add.xml?api_user=username%40website.com&api_key=secret_password&email=#{@user.email}")
require 'open-uri' open("http://pragprog.com/") { |f| f.gets }
результат? только одна строка, а не вся страница:
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n"
может быть попробовать ActionDispatch GET http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-GET
ActionDispatch