+3

Web Service com WSDL

criado por Eder Campos Lopes em 05/01/2012 9:15am
01. Utilizando o módulo SOAP Extension do PHP

Onde baixar?

http://phpsoaptoolkit.sourceforge.net/phpsoap/

Configuração
Entre no php.ini e adicione a seguinte linha:
extension=php_soap.dll

Vamos supor que esta empresa necessite que você crie uma operação ou função que retorne se aquele cliente pode ser cancelado, e qual o percentual de inadiplência que existe e uma observação.

Códigos
Como exemplo, vamos criar um arquivo chamado server.php.

<?php
class Params{
        public $cpfdocliente;
}

function recuperarInformacoesCancelamento($params){
       
	//codigo para validação do cliente no banco de dados

       //como acessar o parametro $cpfdocliente 

	$Ex.:   $sql = "select * from tabela where cpf_cliente = ".$params->cpfdocliente;

	$dados['informacoesCancelamento']['cancelamentoPermitido'] = true;
        $dados['informacoesCancelamento']['percentual'] 	   = 15.00;
        $dados['informacoesCancelamento']['observacao']		   = 'cancelamento permitido';
        return $dados;
}


$options = array('classmap'=>array('recuperarInformacoesCancelamento'=>'Params'));
$server  = new SoapServer("CancelamentoService.wsdl", $options);
$server->addFunction('recuperarInformacoesCancelamento');
$server->handle();

?>

Notem que para capturar o parametro enviado foi preciso criar uma classe e atribuir ao web service através do classmap, está foi a grande charada que eu demorei dias para encontrar.

Agora vamos falar um pouco do .wsdl que entrontra-se na instacia do objeto server


Comentários:

Mostrando 1 - 5 de 5 comentários
Caros amigos. Estou precisando criar um web-service para um contato de suporte aqui na empresa em q trabalho. Não sei por onde começar. Temos um site, onde tem um link de suporte, que encaminha para um formulário. Neste formulário, é informado somente o nome do solicitante e a descrição do suporte. As demais informações é passada via programa mesmo, pois é o nome de usuário logado, empresa logada, etc... estes dados tem q ser enviado via xml para um outro banco de dados em um outro sistema, via web-service. O que posso estar vendo, lendo e estudando para poder desenvolver esta aplicação? Já antecipo os agradecimentos, obrigado a todos.
25/09/2012 10:31am (~6 anos atrás)

Gustavo disse:
Na página do tutorial nr 3 sobre o arquivo tenho alguma dúvidas:

Qual o nome e extenção do arquivo?
Ele deve ficar no mesmo diretório do server?

Não consigo chamar ele para a minha aplicação de exemplo...

Obrigado desdejá!
07/05/2012 3:06pm (~6 anos atrás)

José Luiz disse:
Blz pessoal

estou desenvolvendo um web service, estou usando a API nuSUAP.
Gostaria de saber se tem como criptografar o endereço do web service?

valeuuuuu
20/04/2012 10:53am (~6 anos atrás)

Marcos Orelio disse:
Bem pessoal estou implementando um código php com a função de consumir dados de um web service, no meu caso eu tenho duas telas de login, a primeira com "usuario e senha" do site webservice e a segunda "codigo, senha e CPF" de acesso ao xml do webservice. Muito bem o codigo para consultar o web service está basicamente correto pórem a primeira validação de logon eu não consegui implementar vou colocar o cógigo abaixo de uma validadção via HTTP feita em php

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="http://www.webservicex.net/stockquote.asmx"&#039;); // exemplo de web server
header('HTTP/1.0 401 Unauthorized');
echo 'Texto a ser enviado caso o usuário aperte o botão Cancelar';
exit;
} else {
echo "<p>Olá, {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Você digitou {$_SERVER['PHP_AUTH_PW']} como sua senha.</p>";
}
?>

Esse codigo acima uma chamada para o cliente inserir usuário e senha porém no meu caso eu queria que ele ja atribui-se esse valor string na função ou seja seja automático.
Depois dessa tela o usuario veria uma tela de formulário onde escreveria seu cpf, codigo e senha então esse valores seriam processados pelo web service dando como retorno seu nome, local onde mora etc... nesse caso o arquivo xml especifica quais variaveis deve usar, contudo não sei se meu codigo esta errado ou o fato de eu não ter feito o primeiro login da pagina do server porde ter acarretado nisso.
Eu também irei colocar o último código que fiz abaixo.


<?php
$clientSoap = new SoapClient( "http://www.webservicex.net/stockquote.asmx?WSDL" ); // essa url xml é so para ilustrar
$params = array('codigo' => '00011122233344');
$params2 = array('senha' => '00011122233344');
$params3 = array('cpf' => '00011122233344');
$result = $clientSoap->recuperarInformacoesCancelamento( $params,$params2,$params3 );
print_r($result);
?>

esse codigo acima retrata so uma idéia do que eu queria mas na verdade eu envio os valores codigo, senha, e cpf e so então o servidor me autoriza a pegar nome, local...

Eu tentei via metodo POS[] sem resultado use o metodo GetQuote e metodo CALL do SOAP mas como eu não consegui estabelecer a conexão acho que isso não pede ser de granda ajuda.

Mas muito obrigado antes de tudo quem puder me dar uma ajuda seria de grande valia.
15/03/2012 11:59am (~6 anos atrás)

Brandão disse:
Boa tarde.

Como faço para me autenticar em um webservice utilizando certificado tipo A3? Estou utilizando o soap nativo do PHP.

07/01/2012 5:10pm (~6 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)