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: