2016-12-04 11 views
1

나는 sinatra와 함께 ruby를 사용하며 지불을 위해 수입시 rest-client를 사용했습니다. 특정 URL ('.../users/getToken')에 post 메소드를 통해 입력 한 토큰을 받았습니다. 이 토큰을 사용하여, 나는이 URL에 get 메소드와 지불 정보를 얻을 싶어 :sinatra가있는 루비에서 나머지 클라이언트의 get 메소드를 사용하여 응답을 얻는 방법은 무엇입니까?

GET_URL = 'https://api/iamport.kr/payments/'+ imp_uid

상세 코드는 다음과 같습니다,

def get_paymentsdetails(token, imp_uid) 
    get_url = 'https://api.iamport.kr/payments/'+imp_uid 

    response = RestClient.get get_url, :data => {}.to_json, :accept => :json, :headers => {'Authorization' => token} 
    json = JSON.parse(response, :symbolize_names => true) 
    # json = JSON.parse(response.to_json, {:symbolize_names => true}) 

    return json 
end 

는 그러나, 나는 401을 얻었다 이 코드 부분에 대한 무단 오류. 나는 특정 imp_uid와 GET_URL에 액세스 한 후

response = RestClient.get get_url, :data => {}.to_json, :accept => :json, :headers => {'Authorization' => token} 

, 나는이 페이지 얻었다 { "코드"- 1 "메시지": "허가되지 않은", "응답"널 (null)}

나는 매개 변수 토큰을 확인 및 get_paymentsdetails 함수의 imp_uid는 유효한 문자열 값을 가지므로 어떻게 응답 매개 변수에 액세스 할 수 있습니까 ?? 응답 = RestClient.get get_url .... 코드에 몇 가지 문제가 있다고 생각합니다.

감사합니다.

답변

1

'RestClient'클래스에서 'get'메서드는 속성이있는 일부 개체를 반환합니다. 따라서 응답에는 가치가 거의 없습니다. 그들 중 어느 것이 필요합니까? 그 (것)들에 접근은 당신이 그들의 이름에 의하여 얻을 수있는 그것의 묘사 한 here이다.

response = RestClient.get get_url... 이후에 변수 responseresponse.headers, response.code 또는 response.body을 호출 할 수 있어야합니다.

하지만 자발심에 문제가있는 것 같습니다. 즉 imp_uid 또는 token이 올바르지 않습니다. 왜 원격 서버가 HTTP 코드 401 (인증되지 않음)로 응답했는지 보냈습니다. 그렇다면 imp_uidtoken을 확인해야합니다. 모든 것이 정확하다면 iamport.kr의 지원을 받으십시오. ,

+0

덕분에, 나는 성공 응답 ,, 의 값을 얻을 수 있지만 ,, 내가 어떤 가치를 얻을이 값이 유효한지 확인 후 내가 한 번 더 질문이 있어요 ,,,,,하지만 난 리디렉션 페이지에 HTML 텍스트를 가지고 나는이 부분이 응답일지도 모른다고 생각한다. 누군가 응답 코드는 다음과 같다. " \ \ n \ n 예 도메인 \ n \ n ...".. 그럼, HTML로 구문 분석 된 응답 본문을 얻을 수있는 방법은 무엇입니까? –

+0

그 전에 나는 다음과 같은 코드를 변경했다. response = RestClient.get get_url, { 'Authorization'=> token, : accept => json}, @ cotroller 같은 응답에 @name = 응답을 사용할 수있다. [: response] [: name], 그리고 name이 유효하고 정확한 값을 가지고 있는지 확인했습니다. 나는 물건 위에 마지막 질문을 얻었다! !!! 그 대답을 구문 분석하고 싶습니다. 문자열, .. HTML이 아니라 ... –

+0

질문을 올바르게 이해했다면 [nokogiri gem] (https://github.com/sparklemotion/nokogiri)을 사용하여 html을 파싱 할 수 있습니다. nokogiri :'Nokogiri :: HTML (response.body) .at ('body')'에'response.body'를 전달할 수 있습니다. – sig