0

我正在通过HTTPClientruby​​ gem 调用网络服务。位置无关紧要,但假设它位于:https://mywebservice.com/api/v1/accounts/login/

当我发送一个帖子请求时:

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

我收到 404 响应,表示找不到该页面。我设置了一个代理并检查了发送的确切内容,似乎 gem 正在弄乱 url,它实际上将请求发送到:

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

我完全迷失了,我不知道为什么要这样做。它与它是 https 的事实有什么关系,我应该以不同的方式处理 https 吗?谢谢

4

2 回答 2

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/

于 2013-01-31T18:20:18.543 回答
-2

您应该使用一组参数发布到 uri。就像是

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

其中 data 是具有页面所需参数的哈希值。

例如:

data = {"var" => "var"}
于 2013-01-31T15:35:15.423 回答