Ruby on rails 使用Net::HTTP将请求发布到HTTPS
此使用Ajax的POST请求非常有效:Ruby on rails 使用Net::HTTP将请求发布到HTTPS,ruby-on-rails,ruby,post,rest-client,net-http,Ruby On Rails,Ruby,Post,Rest Client,Net Http,此使用Ajax的POST请求非常有效: var token = "my_token"; function sendTextMessage(sender, text) { $.post('https://graph.facebook.com/v2.6/me/messages?', { recipient: {id: sender}, message: {text:text}, access_token: token }, function(r
var token = "my_token";
function sendTextMessage(sender, text) {
$.post('https://graph.facebook.com/v2.6/me/messages?',
{ recipient: {id: sender},
message: {text:text},
access_token: token
},
function(returnedData){
console.log(returnedData);
});
};
sendTextMessage("100688998246663", "Hello");
我需要有相同的要求,但在Ruby。我尝试使用Net:HTTP,但它不起作用,而且我没有收到任何错误,因此无法调试它:
token = "my_token"
url = "https://graph.facebook.com/v2.6/me/messages?"
sender = 100688998246663
text = "Hello"
request = {
recipient: {id: sender},
message: {text: text},
access_token: token
}.to_json
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
response = http.request(request)
response.body
我应该如何继续获取错误或哪里出错?您的
请求
哈希将被您分配的请求
对象所取代Net::HTTP
。另外,请确保在HTTP请求正文中设置请求参数:
require "active_support/all"
require "net/http"
token = "my_token"
url = "https://graph.facebook.com/v2.6/me/messages?"
sender = 100688998246663
text = "Hello"
request_params = {
recipient: {id: sender},
message: {text: text},
access_token: token
}
request_header = { 'Content-Type': 'application/json' }
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.path, request_header)
request.body = request_params.to_json
http.request(request)
response = http.request(request)
您可能会发现以下参考资料很有用:谢谢您的帮助。然而,我还是什么都没有得到。我没有任何错误,facebook上也没有发生任何事情。为什么要删除.to_json?表单编码应该在内部处理
Net::HTTP
。您得到了什么响应?响应的主体是空白的吗?如果是这样,状态码是什么?这就是问题所在,我没有得到任何回应。我在我的控制台上尝试:curl-xpost,但什么也没发生