2014-11-14 3 views
0

http requests을 만들기 위해 httparty을 사용하는 ruby gem을 작성했습니다. 그것은 irbrails 애플 리케이션에서 작동하지만 내가 sinatra 하나에서 그것을 사용하려고하면 아주 이상한 행동을 받고 있습니다.HTTParty, Rails & Sinatra : 요청 (응답)이 다르다 (응답)

require "httparty" 
class SomeAPI::Client 
def initizialize(some_params) 
    @api_params = some_params 
end 

def login 
    login_response = HTTParty.get(@api_params[:login_url]) 
    puts "Login Result: #{login_response}" 
end 
end 

을 내가 irb 모두에서 로그인 할 때 괜찮 :

gem

보석처럼 보인다.

rails app gemfile (gem "SomeAPI", :path => "~/dev/SomeAPI")에 설정하고 컨트롤러에서 작업을 설정하고 0:0:0:0:3000/someapi?api_params=my_params에서 로그인을 시도하면 정상적으로 작동합니다.

class SomeController < ApplicationController 
    def someapi 
    client = SomeAPI::Client.new(params[:api_params]) 
    client.login 
    end 
end 

마지막으로, 나는 나의 sinatra app에서 같은 일을하려고 : 나는 gemfile에 포함 나는 0:0:0:0:9292/someapi/:my_params에서 요청을하려고합니다. 그러나 new은 제대로 작동하지만 (client은 모든 속성이 올바르게 초기화 된 SomeAPI 개체가됩니다) loginYou need to sign in or sign up before continuing. 오류 메시지를 표시합니다. 마치 다른 리소스에 액세스하려고하는 것처럼 (또는 로그인 자체가 성공하려면 인증 된 beforehands로 나를 필요로하는 것처럼). 코드는 다음과 같습니다.

class App < Sinatra::Base 
    get "/someapi/:my_params" do 
    client = SomeAPI::Client.new 
    client.login 
    end 
end 

포트 3000에서 sinatra 앱을 실행 해 보았습니다 (레일스 기본값과 동일).하지만 아무 것도 변경되지 않았습니다.

어디서 볼 수있는 아이디어 나 리드는 무엇입니까?

params = 
    { 
    :headers => { "Content-Type" => "application/xml", "Accept" => "application/xml"}, 
    :basic_auth => { :username => "some_username", :password => "some_password" } 
    } 

(변화하는 과정의 requestHTTParty.get(@api_params[:login_url], params)에)

:

답변

0

은 내가 login 방법에 아래의 코드를 추가하여 내 문제를 해결