2017-01-25 2 views
0

많은 것을 시도했지만 해낼 수 없습니다. 나는 비누 웹 서비스에 액세스하기 위해 앱에서 savon과 함께 작업했습니다. 응용 프로그램이 RoR 3 및 루비 1.9.3을 사용하는 동안 문제가 없었지만 RoR5 및 루비 2.2.2를 사용하도록 응용 프로그램을 업그레이드 한 이후로 더 이상 사용할 수 없습니다.RoR Savon : ruby ​​2.2.2 이후로 인증 할 수 없습니다.

비누 서버를 요청하려고하면 "인증이 필요합니다"라고 표시됩니다.

client = Savon.client(wsdl: uri, basic_auth: [user_login, user_password]) 
    call_response = client.call(:good_types, :message => {}) 

뿐만 아니라 사용자 정의 헤더 :

나는 기본 인증과 노력

realm = Base64.strict_encode64("login:pass") 
    client = Savon.client(
     wsdl: uri, 
     soap_header: { 'Authorization:' => "BasiC#{realm}"}, 
     log: true, 
     log_level: :debug, 
     pretty_print_xml: true 
    ) 
    # call the 'getFood' operation 
    response = client.call(:good_types, message: {}) 

그러나 아무도 할 수는 항상 같은 응답을 나를 도왔 :

"인증 필요"

어쩌면 선제 적으로 인증을 구축하는 방법을 아는 사람이 있을까요?

답변

0

알았어요! 누군가가 같은 문제가있는 경우

:

soap_header: { 'Authorization:' => "BasiC#{realm}"} 

는 권한 부여 PARAMS 잘못된 원인은 SOAP 헤더하지만 HTTP 헤더되지이다

그래서 우리가 사용해야합니다 :

headers: { 'Authorization:' => "BasiC#{realm}"}