Consumindo Web Services em ASP.NET com SOAP utilizando Cache
Abaixo segue uma classe que desenvolvi para trabalhar mais facilmente com SOAP no PHP, não está completamente pronta mas já pode ser utilizada sem problemas, porém, a parte de tratamento de erros ainda não foi muito bem implementada.
<?php /** * Classe TWsdl * Criada por Cesar Rodrigo Bagatoli */ class TWsdl { //CONSTRUTOR function TWsdl($url = '') { $this->url = $url; $this->params = array(); $this->client = ''; $this->result = ''; $this->metodo = ''; $this->timeout = 60; $this->wsdlDir = '/caminho completo onde ficarao os arquivos cache/'; $this->server = 'http://ip do WS'; } //MUDA A URL DO WSDL function setUrl($url) { $this->url = $url; } //MUDA O NOME DO MÉTODO A SER CHAMADO function setMetodo($met) { $this->metodo = $met; } //MUDA O TIMEOUT DO SOAP function setTimeOut($to) { $this->timeout = $to; } //ADICIONA UM PARAMETRO PARA A CHAMADA DO WSDL function addParam($nom, $val) { $this->params[$nom] = $val; } //PEGA O RESULTADO DO WSDL function getResult() { if($this->chkAttributes()) { //NOME DO ARQUIVO DE CACHE DO WSDL - CRIA O ARQUIVO CACHE DO WS CASO AINDA NÃO HAJA //LEMBRE-SE DE QUE SE FOR MODIFICADO O WS DEVE SER APAGADO O CACHE DO MESMO PARA QUE O CACHE DO WSDL SEJA RENOVADO //SE QUISER PODE SER IMPLEMENTADO FACILMENTE UM ATUALIZADOR AUTOMATICO NO CACHE BASEADO NA DATA DE MODIFICAÇÃO/CRIAÇÃO DO ARQUIVO DE CACHE PARA EVITAR O TRABALHO DE ATUALIZAÇÃO MANUAL $nomeWSDL = substr(strrchr($this->url, '/'), 1, -10)."-".preg_replace("/[^0-9]/", "", $this->server).".wsdl"; if(!file_exists($this->wsdlDir.$nomeWSDL)) { $u = substr($this->server.$this->url, 0); $conteudo = file_get_contents($u); $fp = fopen($this->wsdlDir.$nomeWSDL,'w+'); fwrite($fp, $conteudo); fclose($fp); } //PEGA DO CACHE $this->client = new SoapClient($this->wsdlDir.$nomeWSDL, array("connection_timeout" => $this->timeout)); try { $this->result = $this->client->__soapCall($this->metodo, array('parameters' => $this->params)); } catch (Exception $e) { print_r($e); } return $this->result; } else { return 'Atributos necessários para a operação não foram informados.'; } } //CHECA SE TODOS OS ATRIBUTOS NECESSARIOS FORAM INFORMADOS - USADO INTERNAMENTE private function chkAttributes() { if($this->url == '') { return false; } if($this->metodo == '') { return false; } return true; } } ?>
Páginas:
1
2
Novo Comentário: