2017-03-13 5 views
2

net/http으로 시작하려는 헤더 및 쿼리 매개 변수가 포함 된 게시물 요청이 있습니다. 이 요청은 200 반환하지만 응답 본체는 말한다 : 나는 레일 5.0.2를 사용하고x-www-form-urlencoded POST 요청 및 net/http에 쿼리 매개 변수가 누락되었습니다.

def Search.request_oauth_access_token 
    require 'net/http' 
    uri = URI.parse('https://request.url/oauth2/access_token') 
    params = { 
     'grant_type' => 'my:grant:type' 
    } 
    headers = { 
    'Authorization' => 'Basic sldhfgKGsdfgGOI23==', 
    'Content-Type' => 'application/x-www-form-urlencoded' 
    } 
    http = Net::HTTP.new(uri.host, uri.port) 
    http.use_ssl = true 
    request = Net::HTTP::Post.new(uri.request_uri, headers) 
    query = URI.encode_www_form_component(params) 
    request.body = query 
    response = http.request(request) 
    p response.body 
end 

: {\"error\":\"invalid_request\",\"error_description\":\"Required query parameter 'grant_type' missing.\"}

이 내가 전화 완전한 기능입니다.

답변

2

해결되었습니다. 내가 params 정의에 구문 오류가 있음이 드러났습니다. 요청의 다음

params = { 
     grant_type: 'my:grant:type' 
    } 

그리고 :

query = URI.encode_www_form(params) 
http.request(request, query) 
이 올바른 그것을 정의하는 방법이었다