3
SOAP 서비스에 액세스하려고합니다. 인증없이 WSDL을 사용할 수 있습니다. 2.이 서비스는 https에서 basic_auth를 통해 액세스 할 수 있습니다. 3. SOAP 서비스는 "인증"헤더는 건설 내 코드가 비누 클라이언트입니다 모든 요청 여기Savon 2.1.0 기본 인증이 작동하지 않음
에 포함 할 필요가 :
: 여기@wsdl="https://example.com/table.do&WSDL"
@proxy="http://internal.proxy.com:8080"
@basic_auth=["user","pass"]
@headers={"Authorization" => "Basic"}
client = Savon.client do |globals|
globals.wsdl @wsdl
globals.proxy @proxy
globals.basic_auth @basic_auth
globals.headers @headers
end
client.globals.inspect입니다
#<Savon::GlobalOptions:0x0000000382c7a8 @options={:encoding=>"UTF-8",
:soap_version=>1, :namespaces=>{}, :logger=>#<Logger:0x0000000382c730 @progname=nil,
@level=0, @default_formatter=#<Logger::Formatter:0x0000000382c708
@datetime_format=nil>,
@formatter=nil, @logdev=#<Logger::LogDevice:0x0000000382c6b8 @shift_size=nil,
@shift_age=nil, @filename=nil, @dev=#<IO:<STDOUT>>,
@mutex=#<Logger::LogDevice::LogDeviceMutex:0x0000000382c690 @mon_owner=nil,
@mon_count=0, @mon_mutex=#<Mutex:0x0000000382c640>>>>, :log=>true, :filters=>[],
:pretty_print_xml=>false, :raise_errors=>true, :strip_namespaces=>true,
:convert_response_tags_to=>#<Proc:[email protected]/usr/local/rvm/gems/ruby-2.0.0-p0/gems/savon-2.1.0/lib/savon/options.rb:48 (lambda)>,
:wsdl=>"https://example.com/table.do&WSDL",
:proxy=>"http://internal.proxy.com:8080",
:basic_auth=>["user", "pass"],
:headers=>{"Authorization"=>"Basic"}}>
(3210)는 내가 전화 할 때 :
client.call(:get, message: { sys_id: "67d2f77ed9377840c53fc6da9c094635" })
이 서비스는 반환 :
DEBUG -- : HTTPI GET request to xseaddev.service-now.com (net_http)
INFO -- : SOAP request: https://xseaddev.service-now.com/change_task_list.do?displayvalue=all&SOAP
INFO -- : SOAPAction: "http://www.service-now.com/change_task/get", Content-Type: text/xml;charset=UTF-8, Content-Length: 408
DEBUG -- : <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.service-now.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://www.service-now.com/change_task"><env:Body><ins0:get><tns:sysId>67d2f77ed9377840c53fc6da9c094635</tns:sysId></ins0:get></env:Body></env:Envelope>
DEBUG -- : HTTPI POST request to xseaddev.service-now.com (net_http)
INFO -- : SOAP response (status 401)
내가 잘못 클라이언트를 구성하는 건가요? GET 또는 PoST 요청시 인증 헤더가 전송되지 않습니다. 이 기능을 사용하려면 아무것도 추가/제거해야합니까? 귀하의 도움을 주시면 감사하겠습니다.
"Authorization"헤더가 HTTP 또는 SOAP 헤더를 의미합니까? [': headers' 옵션] (http://savonrb.com/version2.html#headers)은 HTTP 헤더를 설정하고 [': soap_header' 옵션] (http://savonrb.com/version2.html# soap-header)는 SOAP 헤더를 설정합니다. – rubiii
HTTP 헤더를 의미합니다. – Andrew
@rubiii, 왜 이것이 작동하지 않는지에 대한 생각은 없습니까? – Andrew