2013-11-28 46 views
0

我試圖登錄到它具有以下API站點: POST https://www.Thesite.com/Account/LogOn 後JSON data:{UserName:xxx,Pasword:xxx,SecondFactor:[optional]} 保存CookieContainer & header["SecretKey"]通過明年的呼叫,否則你會得到409衝突 我寫了下面的Ruby腳本,但是迴應是:輸入用戶名和密碼 有什麼問題?登錄失敗使用Ruby Httparty和JSON

!/usr/bin/env ruby 
require "rubygems" 
require "httparty" 

include HTTParty 

class TheSite 
    base_uri 'https://www.Thesite.com' 
    def initialize(u, p) 
    @data = {:UserName => u, :Pasword => p}.to_json 
    response = self.class.get('/Account/LogOn') 
    response = self.class.post(
     '/Account/LogOn', 
     :data => @data, 
     :headers=>{'SecretKey'=>response.headers['Set-Cookie']}) 
     @cookie = response.request.options[:headers]['cookie'] 
    puts response 
    end 
end 

thesite = Thesite.new('myuser', 'mypassword') 

回答

0

有一個公平位不正確的位置:

  • 你不需要JSONify數據,但你需要設置正確的JSON頭。很多人這樣做不用擔心。
  • 整個餅乾事情發生在請求之後,而不是它。
  • 一些丟失的括號在這裏膨脹。

這裏有一個工作示例:

!/usr/bin/env ruby 
require "rubygems" 
require "httparty" 

include HTTParty 

class TheSite 
    base_uri 'https://www.Thesite.com' 
    def initialize(u, p) 
    @data = { 
     :UserName => u, 
     :Password => p 
    } 
    res = self.class.post('Account/LogOn', 
          :body => @data, 
          :options => { 
          :headers => { 
           'ContentType' => 'application/json', 
           'Accept'  => 'application/json', 
           'SecretKey' => res.headers['Set-Cookie']       
          } 
          } 
         ) 
    if res.code == 200 
     @cookie = res.request.options[:headers]['Cookie'] 
     # do stuff 
    end 
    end 
end 
+0

仍然有犯錯的臺詞: 「@餅乾= res.request.options [:頭] [ '曲奇']」 這給了:'初始化「:未定義的方法'[]'爲nil:NilClass(NoMethodError)。request.options將「{:limit => 5,:assume_utf16_is_big_endian => true,:default_params => {},:follow_redirects => true,:parser => HTTParty :: Parser,:connection_adapter => HTTParty :: ConnectionAdapter,:base_uri =>「https://www.Thesite」,:body => {:UserName =>「user」,:Password =>「pass」}, :options => {:headers => {「ContentType」=>「application/json」,「Accept」=>「application/json」,「Cookie」=>「ASPXAUTH =;到期日= 1999年10月11日星期一22:00:00 GMT;路徑= /; HttpOnly「}}} – user3047355

+0

@ user3047355更新後,立即嘗試。 – Niall

+0

仍然無法正常工作...同樣的錯誤。您希望得到什麼信息?Thx – user3047355