Anda di halaman 1dari 6

MerlnOnline

EjemplosparaIntegracin

Pgina1 Copyright2015AsesConsultingwww.asesconsulting.com

ndicedeContenido
Generalidades
Integracin
URLdeconexin
Ejemplosdeintegracin
EjemploJava
EjemploPHP
Erroresfrecuentes

Pgina2 Copyright2015AsesConsultingwww.asesconsulting.com

Generalidades
Los servicios de Merln 8 son servicios HTTP/XML(estilo rest), el funcionamiento de los
mismos es elsiguiente,seabreuncanalHTTPenunpuertodeterminado,elclientemediante
un post enva un XML con el formato determinado de Merln(ver Merlin Online 8 Formato
XML.pdf)yesteretornaunXMLconlarespuesta.

Integracin
URLdeconexin
Merln publica sus servicios de normalizacin HTTP con el formato de mensajera
XMLenlasiguienteURL:

http://<servermerlin>:<port>/xmlNormalizer

Donde:
<servermerlin>
:eslaiponombredelservidorenqueresideMerln8
<port>: es el puerto HTTP configurado para la comunicacin con Merln 8, por default es
8889,estopuedesercambiadoapedidodelcliente.

Ejemplosdeintegracin
Para ejemplificar mejor este proceso expondremos ejemplos con fragmentos de
cdigo java y php. En los ejemplo por simplicidad no se utiliza ningn framework pero es
recomendable el uso de un mapeador objeto/xml y viceversa, en el caso de java
recomendamos XStream. En los ejemplos la solicitud corresponde a la normalizacin de un
domicilio.

EjemploJava
Estemtodoarmaelmensajeapartirdelosparmetrosyrealizaelenvodel
mensajeluegoprocesalarespuestaylaretornaaquienloinvoc.

Pgina3 Copyright2015AsesConsultingwww.asesconsulting.com

//Mtododeinvocacinalanormalizacin

privateStringnormalizar(Stringcalle,Stringlocalidad,Stringprovincia,Stringcp){
//ArmadodelXMLconlapeticindeinvocacin
StringBufferxmlRequest=newStringBuffer()
xmlRequest.append("<reqDireccion>\n")
xmlRequest.append("<xdireccion>\n")
xmlRequest.append("<calle>"+calle+"</calle>\n")
xmlRequest.append("<localidad>"+localidad+"</localidad>\n")
xmlRequest.append("<barrio></barrio>\n")
xmlRequest.append("<partido></partido>\n")
xmlRequest.append("<provincia>"+provincia+"</provincia>\n")
xmlRequest.append("<cp>"+cp+"</cp>\n")
xmlRequest.append("</xdireccion>\n")
xmlRequest.append("</reqDireccion>")

//enviarequestalserveryreciberespuesta

Stringresponse=httppostget(xmlRequest.toString())
returnresponse
}

EstemtodoeselencargadodelacomunicacinconelpuertohttpdeMerlin

privateStringhttppostget(Stringmsg){
System.out.println("\n>Seenviaelxml:\n"+msg)
PostMethodpost=newPostMethod(http://192.168.0.206:6669/xmlNormalizer)
HttpClienthttpclient=newHttpClient()
Stringresponse=""
try{
RequestEntityentity=newStringRequestEntity(msg,null,null)
post.setRequestEntity(entity)
httpclient.executeMethod(post)
response=post.getResponseBodyAsString()
}catch(Exceptione){
System.out.println(e)
return""
}
post.releaseConnection()
System.out.println("\n>Serecibeelxml:\n"+response)
returnresponse
}

Pgina4 Copyright2015AsesConsultingwww.asesconsulting.com

HttpClient
Laclase (org.apache.commons.httpclient.HttpClient)correspondeaunclientede
HTTPdelproyectoapache,lamismasepuedeencontraren:
http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/httpcomponents/httpclient/4.0/httpclie
nt4.0.jar
omediantemaven

<dependency>
<groupId>commonshttpclient</groupId>
<artifactId>commonshttpclient</artifactId>
<version>3.1</version>
</dependency>

EjemploPHP
Estemtodoarmaelmensajeapartirdelosparmetrosyrealizaelenvodel
mensajeluegoprocesalarespuestaylaretornaaquienloinvoc.

<?php
echo"<br/>"
echo"PRUEBADELPROTOCOLODEMERLIN9 <br/>"
echo"<br/>"
include"HttpClient.inc"

$httpClient=newHttpClient()
$xmlRequest="<?xmlversion='1.0'encoding='UTF8'?>".
"<reqDireccion>".
"<xdireccion>".
"<calle>Garciadelrio24727f</calle>".
"<numero></numero>".
"<piso></piso>".
"<depto></depto>".
"<barrio></barrio>".
"<localidad>cap</localidad>".
"<partido></partido>".
"<provincia>cap</provincia>".
"<cp></cp>".
"<idmax></idmax>".
"</xdireccion>".

Pgina5 Copyright2015AsesConsultingwww.asesconsulting.com

"</reqDireccion>"
echo"ENVIANDO:<br/><br/>".htmlspecialchars($xmlRequest)."<br/><br/>"

$xmlResponse=

$httpClient>send_to_host('192.168.0.207','7777','/xmlNormalizer',$xmlRequest,0)

echo"RECIBIENDO:<br/><br/>".htmlspecialchars($xmlResponse)
?>

Erroresfrecuentes
Algunosdelosproblemasmshabitualesconlosquepodemosencontrarnosson:

NoseestainvocandolaURLcorrecta.Lamismaestindicadaenestedocumento.
Tenerespecialatencinalpuerto,verificarelpuertopordefectooelqueel
implementadorconfiguro.
NosetieneaccesoalservidordeMerlinOnline,estosepuededebera:
Problemasenlared
Firewalloantivirus
ElserviciodeMerlinestadetenido
Encualquieradeloscasosverificarconelcomandotelnet:telenet<ipserver
merlin><portmerlinonline>
ErroresdeencodingdelMensajeXMLenviadoorecibido,Merlinpordefectosoporte
UTF8
ElmensajeenviadoaMerlinnoeselcorrecto(revisardetenidamentela
documentacindelformatoXML).EnloslogsdeMerlinsepuedenapreciarlos
erroresyelmotivoencasodequeesteseaelcaso.
ElparserdelmensajeXMLnoeselcorrecto.EnestecasoelXMLfueretornadopor
Merlin,peroelinconvenienteesdelclientequeseestacomunicandoconelmismo.
Porcualquierotroinconvenientecomunicarsealmail soporte@asesconsulting.com
,
conelenvodeloslogsdeMerlinyunadescripcindelatecnologaempleadaparala
integracinycualeslarespuestaalintentodeconexin.

Pgina6 Copyright2015AsesConsultingwww.asesconsulting.com

Anda mungkin juga menyukai