这是我在这里的第一篇文章。我不是一个时髦的专家(实际上我是在这里盲目飞行)并且我试图使用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 + '"'
所以,我的问题是,出了什么问题?