SOAP4R 사용자 정의 헤더
-
08-07-2019 - |
문제
SOAP4R로 작업하고 SOAP :: Header :: SimpleHandler를 사용하려고 노력하고 있습니다. 나가는 메시지에 사용자 정의 헤더를 넣으려고하지만 포함하는 방법을 해결할 수는 없습니다. 하위 요소보다는 속성 :
class ServiceContext < SOAP::Header::SimpleHandler
NAMESPACE = "http://context.core.datamodel.fs.documentum.emc.com/"
def initialize()
super(XSD::QName.new(NAMESPACE, 'ServiceContext'))
XSD::QName.new(nil, "Identities")
end
def on_simple_outbound
username = "username"
password = "password"
docbase = "Test"
return {"Identities" => {"Username" => username, "Password" => password, "Docbase" => docbase}}
end
end
반환 :
<n1:ServiceContext xmlns:n1="http://context.core.datamodel.fs.documentum.emc.com/"
env:mustUnderstand="0">
<n1:Identities>
<n1:Username>username</n1:Username>
<n1:Password>password</n1:Password>
<n1:Docbase>Test</n1:Docbase>
</n1:Identities>
</n1:ServiceContext>
반환하기 위해 필요한 것은 다음과 같습니다.
<ServiceContext xmlns="http://context.core.datamodel.fs.documentum.emc.com/">
<Identities xsi:type="RepositoryIdentity" userName="_USER_" password="_PWD_" repositoryName="_DOCBASE_" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</ServiceContext>
모든 도움은 대단히 감사합니다.
해결책
SOAP4R은별로 예쁘지 않습니다. 나는 rdocs abit 주위를 찌르고 문제를 해결하는 가장 간단한 방법 인 것 같습니다. on_simple_outbound
생성하려는 요소의 문자열 표현을 반환하십시오.
그래서 대신
return {"Identities" => {"Username" => username, "Password" => password, "Docbase" => docbase}}
노력하다
%Q(<Identities xsi:type="RepositoryIdentity" userName="#{user}" password="#{password}" repositoryName="#{docbase}" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>)
건축업자와 같은 것을 사용하면 더 루비처럼 보이게 할 수 있지만 시도해 볼 수 있습니다.
다른 옵션은 새로운 비누 라이브러리를 조사하는 것입니다. 필수 흥미로워 보입니다.
제휴하지 않습니다 StackOverflow