<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CrisDev - Cristian Medeiros &#187; webservice</title>
	<atom:link href="http://crisdev.eti.br/tag/webservice/feed" rel="self" type="application/rss+xml" />
	<link>http://crisdev.eti.br</link>
	<description>Desenvolvedor Web</description>
	<lastBuildDate>Sun, 03 Apr 2011 15:38:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Webservice com WSDL no PHP</title>
		<link>http://crisdev.eti.br/webservice-com-wsdl-no-php.html</link>
		<comments>http://crisdev.eti.br/webservice-com-wsdl-no-php.html#comments</comments>
		<pubDate>Mon, 02 Jun 2008 14:49:43 +0000</pubDate>
		<dc:creator>cristianmedeiros</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[wsdl]]></category>
		<category><![CDATA[wsdl com php]]></category>

		<guid isPermaLink="false">http://crisdev.eti.br/?p=14</guid>
		<description><![CDATA[&#160; Criar Webservices no PHP &#233; uma tarefa realtivamente simples, a grande dificuldade esta em gerar WSDL&#180;s. Isso acontece porque apesar do PHP5 trazer grandes funcionalidades nesse campo, ele n&#227;o gera o WSDL. Para ajudar, criar WSDL&#180;s &#233; extremamente complexo, com todas as suas varia&#231;&#245;es e op&#231;&#245;es. Quando disposnibilizamos um webservice para a plataforma PHP [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Criar Webservices no PHP &eacute; uma tarefa realtivamente simples, a grande dificuldade esta em gerar WSDL&acute;s. Isso acontece porque apesar do PHP5 trazer grandes funcionalidades nesse campo, ele n&atilde;o gera o WSDL. Para ajudar, criar WSDL&acute;s &eacute; extremamente complexo, com todas as suas varia&ccedil;&otilde;es e op&ccedil;&otilde;es.</p>
<p>Quando disposnibilizamos um webservice para a plataforma PHP &eacute; facil e muito r&aacute;pido de ser feito, apenas algumas linhas de c&oacute;digo para o server e para o client s&atilde;o suficientes para realizar a transa&ccedil;&atilde;o.</p>
<p><strong>Exemplo1:</strong></p>
<p><em>server.php</em>:</p>
<p>&lt;?php</p>
<p>&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; * Fun&ccedil;&atilde;o utilizada para autenticar o usu&aacute;rio na rede.<br />
&nbsp;&nbsp;&nbsp; &nbsp; */<br />
&nbsp;&nbsp;&nbsp; function Auth($login, $senha){<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp; if(trim($login) == NULL){<br />
&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; return 0;<br />
&nbsp;&nbsp;&nbsp; &nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp; $dbconn = pg_connect(&quot;host=10.0.0.1 port=5432 dbname=database user=master password=master&quot;);<br />
&nbsp;&nbsp;&nbsp; &nbsp; $query = &quot;select count(*) from usuarios where login=&#8217;&quot;.$login.&quot;&#8217; and pass=&#8217;&quot;.$senha.&quot;&#8217;&quot;;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp; $result =&nbsp; pg_query($dbconn, $query);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp; return $row[0]; // retorna 1 se validar, retorna 0 se n&atilde;o validar<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }&nbsp; <br />
&nbsp; <br />
&nbsp; $server = new SoapServer(null, array(&#8216;uri&#8217; =&gt; &#8216;http://auth.localhost.com.br/ws_auth/&#8217;)); // cria o ambiente para servir o webservice</p>
<p>&nbsp; $server-&gt;addFunction(&quot;Auth&quot;); // adiciona a fun&ccedil;&atilde;o de autentica&ccedil;&atilde;o ao escopo</p>
<p>&nbsp; $server-&gt;handle();</p>
<p>&nbsp; <br />
?&gt;<br />
&nbsp;</p>
<p><em>cliente.php:</em></p>
<p>&lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* Cria uma instancia do webservice<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/</p>
<p>&nbsp;&nbsp;&nbsp; $client = new SoapClient(null,array(<br />
&nbsp;&nbsp;&nbsp; &#8216;location&#8217; =&gt; &#8216;http://auth.localhost.com.br/ws_auth/server.php&#8217;,<br />
&nbsp;&nbsp;&nbsp; &#8216;uri&#8217; =&gt; &#8216;http://auth.localhost.com.br/ws_auth/&#8217;,<br />
&nbsp;&nbsp;&nbsp; &#8216;trace&#8217; =&gt; 1));</p>
<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Para charmar a autentica&ccedil;&atilde;o deve-se passar o login e a senha que ser quer validar como segue<br />
&nbsp;&nbsp;&nbsp;&nbsp; * <br />
&nbsp;&nbsp;&nbsp;&nbsp; * $result = $client-&gt;Auth(&#8216;login&#8217;,'senha&#8217;);<br />
&nbsp;&nbsp;&nbsp;&nbsp; * <br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $result = $client-&gt;Auth(&#8216;usuario&#8217;,'senha&#8217;);<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;* resultado da autentica&ccedil;&atilde;o<br />
&nbsp;&nbsp;&nbsp; &nbsp;*<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; print_r($result);<br />
&nbsp; <br />
?&gt;<br />
&nbsp;</p>
<p>E pronto, muito simples n&atilde;o? O problema &eacute; que esse tipo de webservice n&atilde;o &eacute; processado por outras plataformas por n&atilde;o gerar WSDL. Plataformas como .NET, JAVA e RUBY precisa de um WSDL para seguir o modelo do objeto que ser&aacute; gerado. Para resolver isso, voc&ecirc; pode criar um WSDL seguindo as especifica&ccedil;&otilde;es do W3C (<a target="_blank" href="http://www.w3.org/TR/wsdl" onclick="urchinTracker('/outgoing/www.w3.org/TR/wsdl?referer=');">http://www.w3.org/TR/wsdl</a>) ou usar alguma classe de terceiro.</p>
<p>Temos:</p>
<ul>
<li>NuSOAP (http://sourceforge.net/projects/nusoap/)</li>
<li>PEAR::SOAP</li>
<li>Ctrx_SOAP_AutoDiscover ( <a href="http://crtx.org/index.php?area=Main&amp;page=CrtxSoapAutoDiscover" target="_blank" onclick="urchinTracker('/outgoing/crtx.org/index.php?area=Main_amp_page=CrtxSoapAutoDiscover&amp;referer=');">http://crtx.org/index.php?area=Main&amp;page=CrtxSoapAutoDiscover</a>)</li>
<li>Webservice Helper tool (<a href="http://www.jool.nl/new/index.php?file_id=1" target="_blank" onclick="urchinTracker('/outgoing/www.jool.nl/new/index.php?file_id=1&amp;referer=');">http://www.jool.nl/new/index.php?file_id=1</a>)</li>
<li>WSDL_Gen (<a href="http://www.schlossnagle.org/%7Egeorge/php/WSDL_Gen.tgz" target="_blank" onclick="urchinTracker('/outgoing/www.schlossnagle.org/_7Egeorge/php/WSDL_Gen.tgz?referer=');">http://www.schlossnagle.org/~george/php/WSDL_Gen.tgz</a>)</li>
</ul>
<p>Eu j&aacute; trabalhei com NuSOAP mas deixei de lado, pois ela possui um nome que entra em conflito com uma fun&ccedil;&atilde;o nativa do PHP, e para evitar dores de cabe&ccedil;a na distribui&ccedil;&atilde;o eu resolvi optar por outra classe. Eu escolhi a Webservice Helper tool, por sua facilidade de uso. Todas as classes acima s&atilde;o utilizadas em ambiente de produ&ccedil;&atilde;o, basta escolher a que se adeque melhor ao seu uso.</p>
<p>A Webservice Helper tool consegue criar WSDL com PHP de uma maneira muito f&aacute;cil e direta. Basicamente se escreve uma classe, adiciona essa classe ao escopo e pronto, o WSDL est&aacute; pronto para usar, n&atilde;o vou por um exemplo completo aqui para n&atilde;o ficar com o post muito longo, caso tenha alguma d&uacute;vida me mande um e-mail. A classe &eacute; bem explicada e possui um exemplo muito bom. Voc&ecirc; pode baixa-la <a href="arqs/wshelper1_5.zip">aqui</a>.</p>
<p>&nbsp;<p>Tags BlogBlogs: <a href="http://blogblogs.com.br/tag/php" rel="external" target="_Blank" onclick="urchinTracker('/outgoing/blogblogs.com.br/tag/php?referer=');">php</a>, <a href="http://blogblogs.com.br/tag/wsdl+no+php" rel="external" target="_Blank" onclick="urchinTracker('/outgoing/blogblogs.com.br/tag/wsdl+no+php?referer=');">wsdl no php</a>, <a href="http://blogblogs.com.br/tag/wsdl" rel="external" target="_Blank" onclick="urchinTracker('/outgoing/blogblogs.com.br/tag/wsdl?referer=');">wsdl</a>, <a href="http://blogblogs.com.br/tag/webservice" rel="external" target="_Blank" onclick="urchinTracker('/outgoing/blogblogs.com.br/tag/webservice?referer=');">webservice</a>, <a href="http://blogblogs.com.br/tag/webservice+com+php" rel="external" target="_Blank" onclick="urchinTracker('/outgoing/blogblogs.com.br/tag/webservice+com+php?referer=');">webservice com php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://crisdev.eti.br/webservice-com-wsdl-no-php.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

