【问题标题】:Ruby Sinatra create post requestRuby Sinatra 创建发布请求
【发布时间】:2015-04-14 12:45:46
【问题描述】:

我创建了 Web 应用程序,但在创建对 https 服务器的发布请求时遇到了一个问题。 我的获取请求代码在这里:

 uri = URI('https://test.com/all')

  Net::HTTP.start(uri.host, uri.port,
                  :use_ssl => uri.scheme == 'https',
                  :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|

    request = Net::HTTP::Get.new uri.request_uri
    request.basic_auth 'dt', 'dt'

    response = http.request request # Net::HTTPResponse object

    return response.body
  end

如何创建 POST 请求? 我不知道。

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    我从一个使用 post 的 google 授权方法中提取了一部分,它可以更简单,但你可以看到如何使用 params、ssl 等

      require 'net/http'
      require 'net/https'
      require 'uri'
    
      @title = "Google Authetication"
      token = params[:code]
      client_secret = "***********************"
      uri = URI('https://accounts.google.com/o/oauth2/token')
      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)
    
      request.set_form_data('code' => token, 'client_id' => @client_id, 'client_secret' => client_secret, 'redirect_uri' => googleauth_url, 'grant_type' => 'authorization_code')
      request.content_type = 'application/x-www-form-urlencoded'
      response = http.request(request)
      response.code
    

    【讨论】:

      【解决方案2】:

      例子:

      uri = URI('http://www.example.com/search.cgi')
      res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
      puts res.body
      

      【讨论】:

      • 不工作uri = URI.parse('https://test.com/check_account_exists') request = Net::HTTP.post_form(uri, 'username' => username, 'email' => email) request.basic_auth 'dt', 'dt' return request.body
      【解决方案3】:

      我设法做到了,我的工作代码:

       uri = URI('https://test.com/olololo')
        Net::HTTP.start(uri.host, uri.port,
                        :use_ssl => uri.scheme == 'https',
                        :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
          request = Net::HTTP::Post.new uri.request_uri
          request.basic_auth 'dt', 'dt'
          request.body = res_Data.to_json
          response = http.request request
          return response.body
          end
      

      【讨论】:

        猜你喜欢
        • 2014-05-10
        • 1970-01-01
        • 2017-02-13
        • 2014-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-29
        相关资源
        最近更新 更多