Sunteți pe pagina 1din 3

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=1569

[Intermedirio] -Recuperando o XML de uma requisio SOAP em De p!i


Data: Thursday, March 20 @ 13:47:02 Tpico Diego Garcia

Talve a !a"eira !ais popular de se #a er u!a i"tegra$%o e"tre di#ere"tes aplica$&es ' atrav's de (e)services *+,-. /"0!eras aplica$&es gover"a!e"tais tra)alha! co! 1e)services, co!o ' o caso do pro2eto 3ar!4cia -opular, 5ota 3iscal 6letr7"ica 853e9,:o"heci!e"to de Tra"sporte 6letr7"ico 8:Te9, etc. -ara a2udar "esse processo, e;iste! as de#i"i$&es (*D< =ue co"siste "u!a esp'cie de docu!e"ta$%o do 1e)service. -ara #icar ai"da !elhor, o Delphi est4 preparado para i!portar as de#i"i$&es (*D< de u! 1e)service e 24 criar toda u!a i"ter#ace de co!u"ica$%o e"tre a sua aplica$%o e o 1e)service, se"do "ecess4rio so!e"te co"su!ir os !'todos 24 criados. +)via!e"te e;iste u! !u"do de de#i"i$&es e pe=ue"os detalhes =ue "%o irei !e apro#u"dar. -ara !ostrar o =ua"to tudo isso ' tra"=uilo, #are!os o processo co!pleto para o co"su!o de u! 1e)service si!ples. + site (e)service>.56T 8http:??1e)service;."et?1s?de#ault.asp;9 possui u!a s'rie de 1e)services livres para testes. @sare!os o 1e)service :urre"cy :o"vertor, u! 1e)service respo"s4vel por o)ter ta;a de co"vers%o de u!a !oeda para outra. /!porta"do o (*D< -ri!eira!e"te 8aps criar u! "ovo pro2eto o)via!e"te9 ire!os i!portar o ar=uivo (*D< do 1e)service :urre"cy :o"vertor. 6sse est4 dispo"Avel "o e"dere$o: http:??111.1e)service;."et?:urre"cy:o"vertor.as!;B(*D<. Cai;e esse ar=uivo "a sua !4=ui"a e va!os ao processo de i!porta$%o "o Delphi. :o! o pro2eto criado, v4 e! 3ile DE 5e1 +ther e depois v4 e! (e)services DE (*D< /!porter

+ processo de i!portar o (*D< ' e;tre!a!e"te si!ples, "e;t DE "e;t DE #i"ish 8"%o se preocupe co! as op$&es, #a$a a i!porta$%o co! a para!etri a$%o de#ault9. ,ps a i!porta$%o, ser4 criada a u"it :urre"cy:o"vertor.pas e essa 24 ser4 adicio"ada ao pro2eto. :o"su!i"do o (e)service

1 de 3

27/03/2014 11:17

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=1569

:o! isso seu aplicativo 24 est4 pratica!e"te pro"to para co"su!ir o 1e)service, )asta"do ape"as i"cluir u! cdigo e;tre!a!e"te si!ples 8o)via!e"te, pelo #ato do 1e)service ser si!ples9. uses :urre"cy:o"vertor procedure T#r!(e)service:lie"te.:o"verter89F var o::*oap : :urre"cy:o"vertor*oapF )egi" o::*oap :G Get:urre"cy:o"vertor*oap89F try *ho1Message3!t8H@*D DE CI< G JK#H,Lo::*oap.:o"versio"Iate8:urre"cy.@*D,:urre"cy.CI<9M9F #i"ally o::*oap :G "ilF e"dF e"dF *e vocN "u"ca co"su!iu u! 1e)service a"tes e est4 aco!pa"ha"do esse post, para)e"s, vocN aca)a de co"su!ir o seu pri!eiro 1e)service :9. 5o cdigo aci!a #oi co"vertido o valor de 1 dolar para real. -ara sa)er =ual !'todo vocN deve e;ecutar para criar u!a i"sta"cia do o)2eto =ue represe"ta o 1e)service, "a u"it =ue #oi gerada pela i!porta$%o do (*D<, )asta co"#erir os !'todos da sess%o i!ple!e"tatio", o Delphi se!pre dispo"i)ili ar u! !'todo co! a assi"atura GetL5o!eDo(e)serviceM. Iecupera"do o co"te0do das !e"sage"s. + gra"de pro)le!a de tudo isso ' =ue essa "egocia$%o OTT- toda, #ica !uito ca!u#lada de"tro das i!ple!e"ta$&es do Delphi e por algu!as ve es, tive a "ecessidade de validar o co"te0do >M< puro da re=uisi$%o assi! co!o o >M< puro de resposta. -ara resolver esse pro)le!a, )asta utili ar u! co!po"e"te TOttpI/+ e i"terceptar o co"te0do da "egocia$%o OTT-. :al!a, "%o se assuste, isso ' )e! si!ples. + co!po"e"te TOttpIio, de"tre outras coisas, possui os !'todos +"Ce#ore6;ecute e+",#ter6;ecute, o pri!eiro ' e;ecutado a"tes da re=uisi$%o e o segu"do aps !o!e"to da resposta. 6! "osso e;e!plo, adicio"e esse co!po"e"te e !ais dois TMe!o e! seu pro2eto 8!!Ie=uest e !!Iespo"se9 e de#i"a os !'todos +"Ce#ore6;ecute e +",#ter6;ecute do co!po"e"te TOttpIio da segui"te !a"eira. procedure T#r!(e)service:lie"te.httpIioCe#ore6;ecute8co"st Method5a!e: stri"gF *+,-Ie=uest: T*trea!9F )egi" *+,-Ie=uest.-ositio" :G 0F !!Ie=uest.<i"es.<oad3ro!*trea!8*+,-Ie=uest9F *+,-Ie=uest.-ositio" :G 0F e"dF procedure T#r!(e)service:lie"te.httpIio,#ter6;ecute8co"st Method5a!e: stri"gF *+,-Iespo"se: T*trea!9F )egi" *+,-Iespo"se.-ositio" :G 0F !!Iespo"se.<i"es.<oad3ro!*trea!8*+,-Iespo"se9F *+,-Iespo"se.-ositio" :G 0F e"dF 6sse #oi ape"as u! e;e!plo si!plrio, !as co!o vocN pode ver, ta"to o co"te0do do re=uest 8*+,-Ie=uest9, =ua"to o co"te0do do respo"se 8*+,-Iespo"se9 s%o o)2etos do tipo T*trea!, se"do assi!, vocN pode !a"ipular essa i"#or!a$%o da !a"eira =ue #or "ecess4ria, i"clusive, se "ecess4rio, ' possAvel !a"ipular o re=uest para =ue o co"te0do e"viado "%o se2a o gerado pelo Delphi e si!, u! co"te0do gerado e! outra roti"a. -ara reali ar!os o teste, va!os !udar a cria$%o da i"sta"cia do o)2eto =ue represe"ta o 1e)service, para =ue ele te"ha co"heci!e"to do "osso co!po"e"te TOttpIio. procedure T#r!(e)service:lie"te.:o"verterF var o::*oap : :urre"cy:o"vertor*oapF )egi" o::*oap :G Get:urre"cy:o"vertor*oap8#alse, 6!pty*tr, httpIio9F try *ho1Message3!t8H@*D DE CI< G JK#H,Lo::*oap.:o"versio"Iate8:urre"cy.@*D,:urre"cy.CI<9M9F #i"ally o::*oap :G "ilF e"dF e"dF Pe2a =ue agora esta!os especi#ica"do 3 parQ!etros, o pri!eiro ' se "ossa i"sta"cia do 1e)service ir4 utili ar o e"dere$o do

2 de 3

27/03/2014 11:17

:: Active Delphi

http://www.activedelphi.com.br/print.php?sid=1569

(*D< co!o e"dere$o do servi$o, o segu"do parQ!etro de#i"e =ual ser4 o e"dere$o #i"al da re=uisi$%o 8"ote =ue o segu"do parQ!etro a"ula o pri!eiro9 e por #i!, o terceiro parQ!etro ' o co!po"e"te TOttpIio. 3eita a altera$%o, repita o teste e ve2a =ue e! "ossos co!po"e"tes !e!os, est%o os co"te0dos de re=uest e respo"se da re=uisi$%o, co"#or!e a especi#icado a )ai;o. Ie=uest: RB;!l versio"GS1.0S e"codi"gGS@T3DTSBE R*+,-D65P:6"velope ;!l"s:*+,-D65PGShttp:??111.13.org?2003?0U?soapDe"velopeS ;!l"s:;sdGShttp:??111.13.org ?2001?>M<*che!aS ;!l"s:;siGShttp:??111.13.org?2001?>M<*che!aDi"sta"ceSE R*+,-D65P:CodyE R:o"versio"Iate ;!l"sGShttp:??111.1e)service>.56T?SE R3ro!:urre"cyE@*DR?3ro!:urre"cyE RTo:urre"cyECI<R?To:urre"cyE R?:o"versio"IateE R?*+,-D65P:CodyE R?*+,-D65P:6"velopeE Iespo"se: RB;!l versio"GS1.0S e"codi"gGS@T3DTSBE Rsoap:6"velope ;!l"s:soapGShttp:??111.13.org?2003?0U?soapDe"velopeS ;!l"s:;sdGShttp:??111.13.org?2001?>M<*che!aS ;!l"s:;siGShttp:??111.13.org?2001?>M<*che!aDi"sta"ceSE Rsoap:CodyE R:o"versio"IateIespo"se ;!l"sGShttp:??111.1e)service>.56T?SE R:o"versio"IateIesultE2.34VR?:o"versio"IateIesultE R?:o"versio"IateIespo"seE R?soap:CodyE R?soap:6"velopeE ,credite, ' real!e"te !uito 0til ter e! !%os o co"te0do da re=uisi$%o, pois ' co!u! =ue e! u! ce"4rio de i"tegra$%o e"tre aplica$&es, o #or"ecedor do servi$o, solicite opayload da re=uisi$%o, ou se2a, o co"te0do desta, para validar possAveis i"co"sistN"cia. Dispo"i)ili ei "o Gist 8https:??gist.githu).co!?drgarcia1VTW?VW102V19 os #o"tes co!pletos de u! pro2eto utili a"do esses cdigos de e;e!plo, co! algu!as pe=ue"as !odi#ica$&es 8crio o TOttpIio de #or!a di"Q!ica, #i co!)os co! as possAveis !oedas, etc.9, =ue! tiver i"teresse ' s )ai;ar e !o"tar o pro2eto. Diego Garcia http:??drgarcia1VTW.1ordpress.co! http:??t1itter.co!?drgarcia1VTW https:??githu).co!?drgarcia1VTW

Digitado por :: ,ctive Delphi http:??111.activedelphi.co!.)r? , @I< para esta "otAcia ': http:??111.activedelphi.co!.)r?!odules.phpBopG!odloadX"a!eG5e1sX#ileGarticleXsidG1UWV

3 de 3

27/03/2014 11:17

S-ar putea să vă placă și