需要使用WSLite和Groovy重现SOAP。没有错误返回但无法正常工作

时间:2014-08-14 19:24:42

标签: grails soap groovy

这是我在这里的第一篇文章。我不是一个时髦的专家(实际上我是在这里盲目飞行)并且我试图使用WS-Lite重现这个SOAP调用:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Body>
    <ns2:generarManifiesto xmlns:ns2="http://utilerias.timbrado.ws.cfdi.solucionfactible.com">
      <ns2:usuario>testing@solucionfactible.com</ns2:usuario>
      <ns2:password>timbrado.SF.16672</ns2:password>
      <ns2:emisor>
        <domicilioFiscal xmlns="http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd">
          <calle>cozumel</calle>
          <ciudad>zapopan</ciudad>
          <codigoPostal>45086</codigoPostal>
          <colonia>Loma bonita</colonia>
          <estado>Jalisco</estado>
          <noExt>1234</noExt>
          <pais>México</pais>
        </domicilioFiscal>
        <ns1:email xmlns:ns1="http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd">test@solucionfactible.com</ns1:email>
        <ns1:nombreComercial xmlns:ns1="http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd">SOLUCION FACTIBLE</ns1:nombreComercial>
        <ns1:razonSocial xmlns:ns1="http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd">SFERP S.C.</ns1:razonSocial>
        <ns1:rfc xmlns:ns1="http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd">SFE0807172W8</ns1:rfc>
      </ns2:emisor>
    </ns2:generarManifiesto>
  </soapenv:Body>
</soapenv:Envelope>

现在,我使用WSLite创建了这个Groovy脚本。该脚本不返回语法错误,但响应是需要一个参数,尽管我非常确定该参数正在传递。我认为它与命名空间定义(特别是在rfc参数中)有关,这是一个困扰的:

import wslite.soap.SOAPClient
import groovy.xml.StreamingMarkupBuilder
import groovy.xml.XmlUtil

client = new SOAPClient(Server + '?wsdl')

list = client.send(SOAPAction:Server + '.TimbradoHttpSoap11Endpoint/HTTP/1.1'){
     body{
        generarManifiesto('xmlns':'http://utilerias.timbrado.ws.cfdi.solucionfactible.com'){
            usuario(Usuario)
            password(Password)
            email(Email)
            nombreComercial(NombreComercial)
            razonSocial(RazonSocial)
            rfc(rfc)
            emisor{
            domicilioFiscal('xmlns':'http://utilerias.timbrado.ws.cfdi.solucionfactible.com/xsd'){
                    calle(Calle)
                    ciudad(Ciudad)
                    codigoPostal(CodigoPostal)
                    colonia(Colonia)
                    estado(Estado)
                    noExt(NoExt)
                    noInt(NoInt)
                    pais(Pais)
                }
            }

        }
    }
}

x = list.getBody().generarManifiestoResponse

// uncomment each of these in turn to see the specific result
m = x.return.toString()
mensaje = x.return.mensaje.toString()
status = x.return.status.toString()
manifiestoContent = x.return.manifiestoContent.toString()

smb = new StreamingMarkupBuilder()
smb.encoding = 'UTF-8'
def req = {
    mkp.xmlDeclaration()
        result{
        mensaje(mensaje)
        status(status)
        manifiestoContent(manifiestoContent)

    }

}

xms = smb.bind(req)
//uncomment this to see as XML
//return XmlUtil.serialize(xms)

START = '$'
JOIN = ' = "'
MID = '" ;\n$'
END = '" ;\n'
START + 'mensaje' + JOIN + mensaje + 
MID + 'status' + JOIN + status + '"' + 
MID + 'manifiestoContent' + JOIN + manifiestoContent + '"'

所以,我的问题是,出了什么问题?

0 个答案:

没有答案