【问题标题】:How to call JDoodle API from local Rails server?如何从本地 Rails 服务器调用 JDoodle API?
【发布时间】:2019-04-25 01:58:03
【问题描述】:

我正在使用来自本地机器 Rails 服务器的 post 请求调用 JDoodle API,并带有有效的 id 和 secret。我没有得到想要的回应。如果我做错了,请建议我......

我的 Ruby 函数进行 api 调用

def run_Jddodle_API

        require 'net/http' 
        require 'uri' 
        require 'json' 
        uri = URI.parse("https://api.jdoodle.com/v1/execute") 
        request = Net::HTTP::Post.new(uri) 
        request.content_type = "application/json; charset=UTF-8" 
        request.body = { 
            "clientId" => "ddc371fd*************c8efbae", 
            "clientSecret" => "4ee8e79a225***************************a8ee7f331aeeca603", 
            "script" => "<?php printf(\"hello RAJA\"); ?>", 
            "language" => "php", 
            "versionIndex" => "0" 
        }.to_json
        req_options = { use_ssl: uri.scheme == "https", } 

        response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| 
            http.request(request) 
        end 
        puts response.body
    end

响应是

{"error":"Unauthorized Request","statusCode":401}

【问题讨论】:

    标签: ruby-on-rails api jdoodle


    【解决方案1】:

    尝试更改此行:

    request.content_type = "application/json; charset=UTF-8" 
    

    到这里:

    request.content_type = "application/json" 
    

    【讨论】:

    • 感谢@Julien,我也尝试过上述方法,但响应相同
    【解决方案2】:

    我将代码更改如下,它可以工作,但不能说为什么。?

    require 'uri'
    require 'net/http'
    require 'net/https'
    
    
    url = URI("https://api.jdoodle.com/v1/execute")
    
              http = Net::HTTP.new(url.host, url.port)
              http.use_ssl = true
    
              request = Net::HTTP::Post.new(url.path)
              request["Content-Type"] = 'application/json'
              request.body = {
                "script" => params[:code],
                "language" => params[:lang],
                "versionIndex" => params[:version],
                "clientId" => "dc37******************efbae",
                "clientSecret" => "4ee8e79a225a5525*******************************************"
              }.to_json
              response = http.request(request)
              puts response.read_body`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2017-04-22
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多