Frank Vielma
Frank Vielma

Reputation: 19

make a request using curl, equivalent to a REST_CLIENT request

I'm using the following request in Curl

curl -X GET -k -H 'Content-Type: application/json' -H 'Authorization: Bearer XXXXXXX' -H 'RowId: 100' -i 'https://url.xxx/row'

and the request using REST_CLIENT (2.1.0):

RestClient::Request.execute(:url => "https://url.xxx/row", :method => :get, :verify_ssl => false, :headers => {:content_type => "application/json", :Authorization => "Bearer XXXXXXX", :RowId => 100})

RestClient::NotFound: 404 Not Found

The first one (Curl) is working, but the equivalent request in RestClient does not.

The problem is that rest-client is not passing all headers: {:content_type => "application/json", :Authorization => "Bearer XXXXXXX", :RowId => 100}

only content_type and Authorization are used, the others are not taken when request is sending

There is a similar issue with net/http:

require 'net/http'

uri = URI('https://url.xxx/row')
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
https.ssl_version = :TLSv1
req = Net::HTTP::Get.new uri
req['content_type'] = 'application/json'
req['Authorization'] = "Bearer #{token}"
req['RowId'] = 100
res = https.request req
puts res.body

Any suggestions ? Thx

Upvotes: 0

Views: 282

Answers (1)

Mshka
Mshka

Reputation: 1828

rest-client will return 404 error in multiple cases not only for not found errors

the best way here is to return and check the server's response

as per their documentation: https://github.com/rest-client/rest-client#exceptions-see-httpwwww3orgprotocolsrfc2616rfc2616-sec10html

>> RestClient.get 'http://example.com/nonexistent'
Exception: RestClient::NotFound: 404 Not Found

>> begin
     RestClient.get 'http://example.com/nonexistent'
   rescue RestClient::ExceptionWithResponse => e
     e.response
   end
=> <RestClient::Response 404 "<!doctype h...">

probably also try to call e.response.body to check the error

Upvotes: 0

Related Questions