【问题标题】:POST request to HTTPS using Net::HTTP使用 Net::HTTP 向 HTTPS 发送 POST 请求
【发布时间】:2016-08-04 18:11:52
【问题描述】:

这个使用 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(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

我应该如何继续得到错误或我哪里出错了?

【问题讨论】:

    标签: ruby-on-rails ruby post rest-client net-http


    【解决方案1】:

    您的 request 哈希将被您分配给 Net::HTTPrequest 对象替换。还要确保在 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)
    

    您可能会发现以下参考资料很有帮助:http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

    【讨论】:

    • 感谢您的帮助。但是,我仍然没有得到任何东西。我没有任何错误,facebook 上也没有任何反应。
    • 为什么要删除 .to_json ?
    • 表单编码应该在内部处理Net::HTTP
    • 你得到什么回应?响应的正文是空白的吗?如果有,状态码是什么?
    • 这就是问题所在,我没有得到任何回应。我从控制台尝试: curl -X POST localhost:3000/webhook 并没有任何反应
    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 2022-08-11
    • 2018-08-21
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多