2016-12-04 20 views
1

我和sinatra一起使用ruby,並在導入付款時使用了rest-client。 我得到了通過post方法在特定url上輸入的字符串:'.../users/getToken'。 利用這個道理,我想獲得這個URL以get方法付款信息:在sinatra ruby​​中,如何讓我在rest客戶端得到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這部分代碼未經授權的錯誤。

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

後,我訪問GET_URL具體imp_uid,我得到了這個頁面,{ 「代碼」: - 1, 「消息」: 「未授權」, 「響應」:空}

我檢查參數標記並且get_paymentsdetails函數的imp_uid具有有效的字符串值,那麼如何訪問響應參數? 我認爲response = RestClient.get get_url ....代碼存在一些問題。

謝謝。

回答

1

從'RestClient'類的方法'get'返回一些帶有屬性的對象。所以迴應幾乎沒有價值。你需要哪些?訪問他們,你可以得到他們的名字,其描述here

對於您的情況,在response = RestClient.get get_url...之後,您應該擁有變量response並且可以調用response.headersresponse.coderesponse.body

但是,我不怕你有自動化的問題,這意味着imp_uidtoken是不正確的。這就是爲什麼遠程服務器發送給你的答覆與HTTP代碼401(未經授權)。如果是這樣,你應該嘗試檢查你的imp_uidtoken。如果一切正確,請嘗試達到iamport.kr的支持。

+0

謝謝,我成功獲得回覆值,, 但是,我得到了一個問題,我得到一些值,並檢查這個值是否有效,,,,,但我在重定向頁面上獲得HTML文本, ,我認爲這部分可能是response.body,response.body就是這樣的字符串代碼:「<!doctype html> \ n \ n \ n 示例域 \ n \ n ...」.. 那麼,我怎樣才能獲得由HTML分析的響應正文的頁面呢? –

+0

在此之前,我改變了這樣的代碼:response = RestClient.get get_url,{'Authorization'=> token,:accept => json},並且我可以像cotroller那樣使用一些響應值,@name = response [:response] [:name],並且我檢查的名字具有有效和正確的值。我得到了最後一個問題上面的事情!我想解析response.body到HTML ,,,不是字符串.. –

+0

如果我正確理解你的問題,你可以使用[nokogiri寶石](https://github.com/sparklemotion/nokogiri)來解析html。您可以將'response.body'傳遞給nokogiri:'Nokogiri :: HTML(response.body).at('body')'。 – sig

相關問題