Как вызвать JDoodle API с локального сервера Rails? - PullRequest
0 голосов
/ 23 апреля 2019

Я звоню в JDoodle API с пост-запросом с моего Rails-сервера на моей локальной машине с действительным идентификатором и секретом.Я не получаю желаемого ответа.Пожалуйста, предложите мне, если я делаю неправильно ....

Моя функция 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}

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

попробуйте изменить эту строку:

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

к этому:

request.content_type = "application/json" 
0 голосов
/ 24 апреля 2019

Я изменил код, как показано ниже, и он работал, но не могу сказать, почему .?

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`
...