soap4r de Ruby não fornecer namespace?

votos
0

Eu estou tentando usar soap4r (de https://github.com/mumboe/soap4r ) para escrever um cliente SOAP para um produto chamado SysAid.

Eu tenho um exemplo de trabalho do cliente SOAP em Java e, para a maioria dos métodos, o meu cliente rubi funciona também. O cliente Java é útil para determinar erros com a versão Ruby.

Estou recebendo um erro ao usar uma chamada especial:

SOAP::FaultError: prefix xs is not bound to a namespace

Aqui está a mensagem de que soap4r enviado, o que gerou esse erro:

<?xml version=1.0 encoding=utf-8 ?>
<env:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
    xmlns:xsd=http://www.w3.org/2001/XMLSchema
    xmlns:env=http://schemas.xmlsoap.org/soap/envelope/>
  <env:Body>
    <n1:save xmlns:n1=http://api.ilient.com/>
      <sessionId>1339292997261</sessionId>
      <apiSysObj xsi:type=n1:apiServiceRequest>
        <customDateFields></customDateFields>
        <customFields>
          <entry>
            <key xsi:type=xs:string>sr_cust_dafis_fau</key>
            <value xsi:type=xs:string></value>
          </entry>
          <entry>
            <key xsi:type=xs:string>sr_cust_activity</key>
          </entry>
        </customFields>
        <description>This is the description of the ticket.</description>
      </apiSysObj>
    </n1:save>
  </env:Body>
</env:Envelope>

E aqui está o Java envia para o mesmo método, que o servidor não não reclamar:

<?xml version=1.0 ?>
<S:Envelope xmlns:S=http://schemas.xmlsoap.org/soap/envelope/>
  <S:Body>
    <ns2:save xmlns:ns2=http://api.ilient.com/>
      <sessionId>1339199684324</sessionId>
      <apiSysObj xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:type=ns2:apiServiceRequest>
        <customDateFields/><customFields>
        <entry>
          <key xmlns:xs=http://www.w3.org/2001/XMLSchema xsi:type=xs:string>sr_cust_dafis_fau</key>
          <value xmlns:xs=http://www.w3.org/2001/XMLSchema xsi:type=xs:string></value>
        </entry>
        <entry>
          <key xmlns:xs=http://www.w3.org/2001/XMLSchema xsi:type=xs:string>sr_cust_activity</key>
        </entry>
      </customFields>
      <description>This is the description of the ticket.</description>
    </apiSysObj>
  </ns2:save>
</S:Body>
</S:Envelope>

Como você pode ver, o erro é proveniente do tag customFields. soap4r está deixando de fora os xmlns: atribuir xs na etiqueta da chave, enquanto Java é colocá-lo em.

não soap4r não fazer erros críticos como este em qualquer outra chamada de método, tanto quanto eu posso dizer.

Como posso obter soap4r para adicionar este atributo necessário para a tag chave?

Publicado 10/06/2012 em 03:01
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Eu acho que os "xmlns: xsd =" namespace http://www.w3.org/2001/XMLSchema" foi definida no 'env: Envelope', o problema é por isso que no corpo soap4r usa 'xs: string' em vez de "xsd: string".

Respondeu 29/06/2012 em 04:39
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more