Question

Je travaille avec soap4r et j'essaie d'utiliser SOAP :: Header :: SimpleHandler. J'essaie de le faire pour mettre un en-tête personnalisé sur le message sortant, mais je ne peux pas trouver comment obtenir inclure des attributs plutôt que des sous-éléments:

    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

qui retourne:

    <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>

Ce dont j'ai besoin pour revenir est le suivant:

    <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>

Toute aide est grandement appréciée.

Était-ce utile?

La solution

soap4r n'est pas très joli. J'ai jeté un coup d'œil autour de la commande rdocs et il semble que le moyen le plus simple de résoudre votre problème serait que on_simple_outbound renvoie la représentation sous forme de chaîne de l'élément que vous voulez créer.

donc au lieu de

return {"Identities" => {"Username" => username, "Password" => password, "Docbase" => docbase}}

essayer

%Q(<Identities xsi:type="RepositoryIdentity" userName="#{user}" password="#{password}" repositoryName="#{docbase}" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>)

En utilisant quelque chose comme Builder, vous pourriez lui donner un aspect plus rubyish, mais essayez-le.

L’autre option consisterait à explorer de nouvelles bibliothèques de feuilletons. handsoap semble intéressant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top