2013-01-31 52 views
0

我正在通過HTTPClient致電web服務ruby gem。位置並不重要,但讓我們說這是:https://mywebservice.com/api/v1/accounts/login/Ruby httpclient url

當我發送POST請求:

url = "https://mywebservice.com/api/v1/accounts/login/" 
client = HTTPClient.new 
client.post url 

我得到一個404響應,該頁面沒有被發現。我設置的代理,並檢查了下發送正是它看起來像寶石是搞亂的URL,它實際上將請求發送到:

https://mywebservice.comhttps://mywebservice.com:443/api/v1/accounts/login/ 

我完全失去了,我沒有它爲什麼這樣做。它與https有什麼關係,而且我應該以不同的方式處理https? 謝謝

+0

是這是一個錯字或者是真正的請求'https://mywebservice.comhttps://mywebservice.com :443/api/v1/accounts/login /' – BlackHatSamurai

回答

-2

你應該發佈到uri與params的身體。類似於

client.post "http://mysite.com:8080", data 

其中數據是具有頁面所需參數的散列。

例如:

data = {"var" => "var"} 
1

是,如果要求一個https網址做到這一點:

require 'net/http' 
require 'net/https' 
require 'uri' 

uri = URI.parse(url) 

http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri) 
#you need to set this field to true 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
response = http.request(request) 

這裏是一個鏈接,應該有所幫助:

http://bibwild.wordpress.com/2012/04/30/httpclient-is-a-nice-http-client-forin-ruby/

+1

有一點需要注意的是,你應該對verify_mode非常小心。您(可能)希望在開發過程中不設置它,但它應該着重在生產中驗證。 –

+0

我正在使用HTTPClient gem並使用它與API進行接口,而不是net/http。你能告訴我我需要改變哪些設置嗎? – 0xSina

+0

client.ssl_config.verify_mode = OpenSSL :: SSL :: VERIFY_NONE – BlackHatSamurai