400 ruby中的错误请求,但不是curl
我尝试在ruby中发出https post请求,它在curl中工作,但我在ruby中收到400个错误请求,我很难找出原因 以下是ruby代码: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
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