Не удается преобразовать запросы RestClient в Net :: HTTP.
Функция # 1:
payload = {'login': 'user', 'password': 'pass'}
headers = {'Shopify-Auth-Mechanisms': 'password'}
headers['Host'] = 'https://sample.com'
headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17'
uri = URI('https://login.com/test')
response = RestClient.post(url, payload, headers) do |response, request, result, &block|
puts response.code
if [301, 302, 307].include? response.code
@cookies = response.cookies
RestClient.get(response.headers[:location], cookies: @cookies)
else
response.return!(request, result, &block)
end
end
page = Nokogiri::HTML(response)
@crsf_token = page.css("meta[name='csrf-token']").first.attributes["content"].value
Функция № 2:
response = RestClient::Request.execute(
method: :post,
payload: sample_data.to_json,
url: @discount_url,
cookies: @cookies,
headers: headers
)
В функции # 1: я попробовал приведенный ниже код, но получил другой результат.
#try 1
uri = URI(@login_url)
Net::HTTP.start(uri.host, uri.port) do |http, payload, &block|
request = Net::HTTP::Post.new(uri.request_uri, headers)
request.body = payload.to_json
response = http.request(request)
puts response.code
end
#try 2
uri = URI(@login_url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request["Shopify-Auth-Mechanisms"] = 'password'
request["Host"] = 'https://sample.com'
request["User-Agent"] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17'
request.body = payload.to_json
request.basic_auth(username, password)
response = http.request(request)
В исходном запросе RestClient (функция # 1) возвращается 200 , но в моем преобразовании возвращается 400 .
Не представляю, пожалуйста, помогите преобразовать 2 функции. Заранее спасибо!