miércoles, abril 02, 2014

Consumir Servicio Web con HttpClient

Gracias por la respuesta, ahi logre consumir el webservice.
Basicamente lo unico que modifique fue comentar el writer.Open(&Archivo),
este lo ocupaba para ver si se escribía correctamente el XML, al
comentarlo me hiso el request de consumir el webservices sin
problemas.

&HttpClient.AddHeader('
Content-type','text/xml; charset=UTF-8')
&HttpClient.AddHeader('SOAPAction','' )
&HttpClient.Port=80
&HttpClient.Host="sve-piloto.zofri.cl"
&writer.OpenRequest(&HttpClient)
//&writer.Open('comosoapui.xml')
&writer.WriteStartElement('SOAP-ENV:Envelope')//<SOAP-ENV:Envelope
&writer.WriteAttribute('xmlns:SOAP-ENV','http://schemas.xmlsoap.org/
soap/envelope/
') //xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
envelope/
"
......
....
..
.
&writer.Close()
&HttpClient.Execute('POST','sveConsultasWSN/
ConsultasResultadosVisacion') 
__________________________________________________________________
Un Ejemplo de como consumir Servicios web con HTTPCLIENT
Parm(in:&CURP,out:&ErrDscr,out:&ErrNum,out:&String);
/*
&client = tipo httpclient
&writer = tipo xmlwriter
&reader = tipo xmlreader
*/

/* Este es el XML que genera el strom para consumir el ws
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<consultarPorCurp xmlns="http://microsoft.com/webservices/wsRENAPO/wsCURPS">
<aCveCurp>oemg630113mdflld04</aCveCurp>
</consultarPorCurp>
</soap:Body>
</soap:Envelope>
*/

// Estas son las instrucciones que se usaron con Genexus para crear un XML igual al del storm
&client.host = "bse.seg.gto.gob.mx"
&client.addHeader("Content-Type", "text/xml")
&client.addHeader("SOAPAction", "http://microsoft.com/webservices/wsRENAPO/wsCURPS/consultarPorCurp")

&writer.openRequest(&client) // si se quiere generar un archivo plano para ver como queda el xml cambiar esta linea por &writer.Open('C:/NombreArchivo.xml')
&writer.WriteStartDocument("utf-8")
&writer.WriteNSStartElement("soap:Envelope")
&writer.WriteAttribute("xmlns:soap","http://schemas.xmlsoap.org/soap/envelope/")
&writer.WriteAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
&writer.WriteAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema")
&writer.WriteStartElement("soap:Body")
&writer.WriteNSStartElement("consultarPorCurp")
&writer.WriteAttribute("xmlns","http://microsoft.com/webservices/wsRENAPO/wsCURPS")
&writer.WriteRawText('<aCveCurp>' + trim(&CURP) + '</aCveCurp>' )
&writer.WriteEndElement()
&writer.WriteEndElement()
&writer.WriteEndElement()
&writer.Close()

&client.Execute("POST", "/SCE/alumno/Renapo")

if &client.statuscode >= 300 // error
&ErrDscr = &client.reasonline
&errNum = &client.StatusCode
Else // consumió el ws sin problemas
/*Procesa la respuesta
este es un ejemplo de la respuesta xml que devuelve el ws
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<consultarPorCurpResponse xmlns="http://microsoft.com/webservices/wsRENAPO/wsCURPS">
<consultarPorCurpResult>VEOB931113HJCNLR02|VENEGAS|OLVERA|BRANDON EFREN|H|13/11/1993|MEX|14|JC</consultarPorCurpResult>
</consultarPorCurpResponse>
</soap:Body>
</soap:Envelope>
*/
&reader.openResponse(&client)
Do While &reader.ReadType(1, 'consultarPorCurpResponse') = 1
&reader.read()
do while &reader.name <> 'consultarPorCurpResponse'
if &reader.Name = 'consultarPorCurpResult'
&string = &reader.Value
exit
endif
&reader.read()
Enddo
If not &String.IsEmpty()
exit
Endif
Enddo
Endif
&reader.close()

Return 

No hay comentarios: