문제

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"/>)

건축업자와 같은 것을 사용하면 더 루비처럼 보이게 할 수 있지만 시도해 볼 수 있습니다.

다른 옵션은 새로운 비누 라이브러리를 조사하는 것입니다. 필수 흥미로워 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top