Ruby https POST带有头文件和auth错误

时间:2014-04-16 16:23:59

标签: ruby http

我正在尝试发送基于curl的帖子请求:

curl -XPOST -H content-type:application/json -d "{\"date\":\"2012-07-02\",\"aaaa\":\"bbbbb\", \"cccc\" : \"\[\"dddd\",\"eeee\",\"fffff\"\]\"}" URI -u USERNAME:PASSWORD

在Ruby中:

@toSend = {
    "date" => "2012-07-02",
    "aaaa" => "bbbbb",
    "cccc" => ["dddd","eeee","fffff"]
}.to_json

uri = URI.parse("https:/...")
https = Net::HTTP.new(uri.host,uri.port)
https.use_ssl = true

req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
req.body = "[ #{@toSend} ]"
req.basic_auth options[:username].to_s, options[:password].to_s
post = https.request(req)

出于某种原因,auth没有附加可能出错的地方?

1 个答案:

答案 0 :(得分:0)

我怀疑你的请求在你添加auth参数之前就已经运行了。 我会这样走:

require 'net/http'
require 'uri'

url = URI.parse('https://....')
req = Net::HTTP::Post.new(url.path)
req.basic_auth options[:username].to_s, options[:password].to_s
req.use_ssl = true
req.form_data({"date" => "2012-07-02", "aaaa" => "bbbbb", "cccc" => ["dddd","eeee","fffff"]})

resp = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }