2014-04-07 6 views
3

abc 금융 웹 서비스에 액세스하기 위해 savon gem을 사용하고 있습니다. 오류 메시지 사용자가 승인하지 못했습니다. 이 코드를 사용하여 응답에 액세스합니다.Savon : 사용자가 승인하지 않았습니다.

@wsdl="https://webservice.abcfinancial.com/wsdl/Prospect.wsdl" 
@basic_auth=["user","pass"] 
@headers={"Authorization" => "Basic"} 

@client = Savon.client do |globals| 
    globals.wsdl @wsdl 
    globals.basic_auth @basic_auth 
    globals.headers @headers 
end 

@message = { 
    :clubNumber=> 'Club 0233', 
    :firstName=> 'abc', 
    :lastName=> 'def', 
    :gender=> "male" 
} 
response = @client.call(:insert_prospect, message: @message) 

및 오류 메시지 user not authorize이 표시됩니다. 검색했지만 해결책을 찾지 못했습니다. 도와주세요.

+0

서비스에서 기본 인증을 사용 하시겠습니까? 그렇다면 브라우저에서 서비스를 가져와 기본 인증 정보가 실제로 작동하는지 확인할 수 있습니까? – house9

+0

기본 인증을 사용하는지 아닌지 어떻게 테스트합니까? – vishu

답변

0

그들은 JAX-WS를 사용하고 있습니다. 이 기사에 따르면 http://examples.javacodegeeks.com/enterprise-java/jws/application-authentication-with-jax-ws/ (및 Google) http 헤더에서 login-password를 사용해야합니다. http://abcfinancial.com에 계정이 없으므로 코드를 테스트 할 수 없습니다. 을보십시오 :

require 'savon' 

user = 'myLogin' 
password = 'myPassword' 

client = Savon.client(
    wsdl: 'https://webservice.abcfinancial.com/wsdl/Prospect.wsdl', 
    headers: {username: user, 
       password: password}, 
    pretty_print_xml: true, 
    log: true 
) 

message = { 
    :arg0 => { 
     clubNumber: 'Club 0233', 
     :personal => { 
      :firstName => 'myName', 
      :lastName => 'myLastName', 
      :gender => 'male' 
     } 
    } 
} 

response = client.call(:insert_prospect, message: message) 

이 좋은 기사 http://predic8.com/wsdl-reading.htm를 읽고 디버깅을 (pretty_print_xml : 사실, 로그는 true).

관련 문제