Web Service com WSDL
Um dos principais objetivos dos Web Services é fazer a comunicação entre sistemas heterogêneos de maneira distribuída. Um bom exemplo para deixar claro para os nossos amigos internaltas é a comunicação entre dois servidores, um deles, dotado dos seguintes “apetrechos” (Windows, ISS, ASP) e outro com (Linux, Apache e PHP). Como fazer a comunicação entre estes dois servidores bom é o que vamos aprender hoje.
UDDI (Universal Description, Discovery and Integration): Descoberta e Publicação
WSDL (Web Service Definition Language): Descrição
SOAP (Simple Object Access Protocol): Mensagens
Imagine o seguinte cenário você tem que desenvolver um WEB Service para dentro da sua empresa que forneça alguns dados dela, porém esta empresa possui uma regra especifica de como você deverá montar este Web Service. Ai entra o WSDL na jogada (falaremos mais sobre ela abaixo), ele que controla e diz o que o seu Web service ira fazer.
O WSDL é um arquivo que descrever um Web Service, este arquivo geralmente é gerado no formato XML. Nele se encontram o nome da função, variáveis de entrada, saída, tipo dos dados, etc. Estes dados são salvos na UDDI, onde você encontra também a URL para a conexão destes serviços.
A máquina acessa o UDDI para buscar informações sobre um determinado serviço, através do seu WSDL ela tem acesso ao nome da função e as variáveis de entrada e saída com seus respectivos tipos de dados. Após é feita a comunicação através do protocolo SOAP, utilizando-se o XML como mensagem.
Existem duas maneiras mais utilizadas no PHP para se criar um Web Service, uma delas é utilizando-se do módulo SOAP Extension, uma nova extensão disponível a partir da versão 5 do PHP, porém muito limitada e, outra é a utilização de uma API desenvolvida em PHP, denominada de NuSOAP. Sua principal vantagem é o seu suporte embutido ao WSDL.
Mas como estamos trabalhando com um WSDL ja feito e enviado por outra empresa veremos isso na próxima página.
UDDI (Universal Description, Discovery and Integration): Descoberta e Publicação
WSDL (Web Service Definition Language): Descrição
SOAP (Simple Object Access Protocol): Mensagens
Imagine o seguinte cenário você tem que desenvolver um WEB Service para dentro da sua empresa que forneça alguns dados dela, porém esta empresa possui uma regra especifica de como você deverá montar este Web Service. Ai entra o WSDL na jogada (falaremos mais sobre ela abaixo), ele que controla e diz o que o seu Web service ira fazer.
O WSDL é um arquivo que descrever um Web Service, este arquivo geralmente é gerado no formato XML. Nele se encontram o nome da função, variáveis de entrada, saída, tipo dos dados, etc. Estes dados são salvos na UDDI, onde você encontra também a URL para a conexão destes serviços.
A máquina acessa o UDDI para buscar informações sobre um determinado serviço, através do seu WSDL ela tem acesso ao nome da função e as variáveis de entrada e saída com seus respectivos tipos de dados. Após é feita a comunicação através do protocolo SOAP, utilizando-se o XML como mensagem.
Existem duas maneiras mais utilizadas no PHP para se criar um Web Service, uma delas é utilizando-se do módulo SOAP Extension, uma nova extensão disponível a partir da versão 5 do PHP, porém muito limitada e, outra é a utilização de uma API desenvolvida em PHP, denominada de NuSOAP. Sua principal vantagem é o seu suporte embutido ao WSDL.
Mas como estamos trabalhando com um WSDL ja feito e enviado por outra empresa veremos isso na próxima página.
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
(~12 anos atrás)
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á!
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
(~12 anos atrás)
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
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
(~12 anos atrás)
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"'); // 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.
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="http://www.webservicex.net/stockquote.asmx"'); // 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
(~12 anos atrás)
Boa tarde.
Como faço para me autenticar em um webservice utilizando certificado tipo A3? Estou utilizando o soap nativo do PHP.
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
(~13 anos atrás)