Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
400 ruby中的错误请求,但不是curl_Ruby_Curl_Net Http_Ruby 1.8.7 - Fatal编程技术网

400 ruby中的错误请求,但不是curl

400 ruby中的错误请求,但不是curl,ruby,curl,net-http,ruby-1.8.7,Ruby,Curl,Net Http,Ruby 1.8.7,我尝试在ruby中发出https post请求,它在curl中工作,但我在ruby中收到400个错误请求,我很难找出原因 以下是ruby代码: require 'rubygems' require 'net/https' require 'uri' require 'json' uri = URI.parse("https://api.parse.com/1/push") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true

我尝试在ruby中发出https post请求,它在curl中工作,但我在ruby中收到400个错误请求,我很难找出原因

以下是ruby代码:

require 'rubygems'
require 'net/https'
require 'uri'
require 'json'

uri = URI.parse("https://api.parse.com/1/push")
http =  Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

req = Net::HTTP::Post.new(uri.host)
req['Content-Type'] = "application/json"
req['X-Parse-Application-Id'] = "abc123"
req['X-Parse-REST-API-Key'] = "abc123"

req.body = {:data => {:alert => "sup"}, :channels => ["notifications"]}.to_json

resp = http.start{|http| http.request(req)}

puts resp.inspect
这给了我一个
#
响应

但是旋度等价物的效果很好:

curl -X POST \
  -H "X-Parse-Application-Id: abc123" \
  -H "X-Parse-REST-API-Key: abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "channels": [
      "notifications"
    ],
    "data": {
      "alert": "sup?"
    }
  }' \
  https://api.parse.com/1/push

你知道我做错了什么吗?

你应该指定完整的url:

req = Net::HTTP::Post.new("https://api.parse.com/1/push")
def get_作业(作业名称)
放置“发布作业#{job_name}以获取测试更新顺序服务”
获取作业\u xml=”
abc
我的产品
#{job_name}
"
@http=Net::http.new(@server,@port)
request=Net::HTTP::Post.new(“/XISOAPAdapter/MessageServlet?senderParty=&senderService=faceNamespace=http://myco.uk/Test/GetUpdateOrders/1.0'),initheader={'Content-Type'=>'text/xml'})
request.basic_auth(@username,@password)
request.content\u type='text/xml'
request.body=get\u job\u xml
response=@http.request(请求)
结束

我已经这样定义了我的方法及其工作原理。

对我来说,问题不是通过SSL发出请求。一旦我设置了以下行,一切都正常了:

http.use_ssl = true
这不是OPs的问题,但我还是发布了,因为错误消息是相同的,并且这个线程是谷歌最热门的错误点击之一

http.use_ssl = true