使用 rest_client 从 rails 发送 post 请求 .. 400 错误请求
Sending post request from rails with rest_client.. 400 Bad request
基本上,我想向 faye 服务器发送 post 请求。当我使用 curl 时,它起作用了,
curl http://localhost:9292/faye -d 'message={"channel":"/messages/new", "data":"hello"}'
我可以在客户端看到你好
但是当我使用 http_party 或 rest_client 或 net http 时,它说请求错误。
def send
params = {'channel' => 'faye/messages/new','data' => 'hello', "Content-type" => "application/json"}
x = Net::HTTP::Post.new (URI.parse('http://localhost:9292/faye'))
puts x.body
# I tried it with http_ party too and rest_cliet.
# data = {
# channel: "messages/new",
# data: "hello"
# }
# RestClient.post 'http://localhost:9292/faye', :channel => 'messages/new', :data=> "hello"
# response = RestClient::Request.execute(method: :post, url: '127.0.0.1:9292/faye',messages: {"channel" => "messages/new", "data"=>"hello"})
end
end
我试过Submitting POST data from the controller in rails to another website
的解决方案
和但它仍然说请求错误。
我不知道我哪里弄错了。我一直在扯我的头发
几天。
我的 ruby 版本是 2.2.4
rails-v => 4.2.5
编辑: 在接受的答案的帮助下,我更新了我的方法。现在可以使用了。
require 'rest_client'
require 'json'
def send
RestClient.post 'http://localhost:9292/faye', {message: {"channel" => "/messages/new", "data"=>"hello"}.to_json}, {:content_type => :json, :accept => :json}
end
在您的 curl 示例中,您将发送 json 数据,但在使用 Ruby 时不会。试试这个
require "json"
RestClient.post("http://localhost:9292/faye", {
message: {"channel" => "messages/new", "data"=>"hello"}.to_json
})
基本上,我想向 faye 服务器发送 post 请求。当我使用 curl 时,它起作用了,
curl http://localhost:9292/faye -d 'message={"channel":"/messages/new", "data":"hello"}'
我可以在客户端看到你好
但是当我使用 http_party 或 rest_client 或 net http 时,它说请求错误。
def send
params = {'channel' => 'faye/messages/new','data' => 'hello', "Content-type" => "application/json"}
x = Net::HTTP::Post.new (URI.parse('http://localhost:9292/faye'))
puts x.body
# I tried it with http_ party too and rest_cliet.
# data = {
# channel: "messages/new",
# data: "hello"
# }
# RestClient.post 'http://localhost:9292/faye', :channel => 'messages/new', :data=> "hello"
# response = RestClient::Request.execute(method: :post, url: '127.0.0.1:9292/faye',messages: {"channel" => "messages/new", "data"=>"hello"})
end
end
我试过Submitting POST data from the controller in rails to another website
的解决方案和但它仍然说请求错误。
我不知道我哪里弄错了。我一直在扯我的头发 几天。 我的 ruby 版本是 2.2.4 rails-v => 4.2.5
编辑: 在接受的答案的帮助下,我更新了我的方法。现在可以使用了。
require 'rest_client'
require 'json'
def send
RestClient.post 'http://localhost:9292/faye', {message: {"channel" => "/messages/new", "data"=>"hello"}.to_json}, {:content_type => :json, :accept => :json}
end
在您的 curl 示例中,您将发送 json 数据,但在使用 Ruby 时不会。试试这个
require "json"
RestClient.post("http://localhost:9292/faye", {
message: {"channel" => "messages/new", "data"=>"hello"}.to_json
})