Você está aqui: PHP ::: PHP + SOAP Web Services ::: WSDL (Web Services Description Language) |
Usando a ferramenta php2wsdl para gerar um documento WSDL (Web Services Definition Language) a partir de nossas classes PHPQuantidade de visualizações: 5283 vezes |
Embora seja possível escrever web services baseados em SOAP sem um documento WSDL, é prática comum disponibilizá-lo, visto que há muitas ferramentas que conseguem analisar um arquivo WSDL, extrair seus métodos (com seus devidos parâmetros e retornos) e contruir as requisições ao serviço web. Nesta dica eu mostrarei como usar a ferramenta php2wsdl (PHP WSDL Generator) para construir um arquivo WSDL automaticamente a partir da leitura de uma ou mais classes PHP. Para isso, siga atentamente os passos abaixo: 1) Faça o download do PHP WSDL Generator. É muito fácil encontrá-lo na internet. Uma boa fonte é o endereço http://www.phpclasses.org. Quando encontrar um arquivo com o nome de php2wsdl, faça o download. É bem provável que esta seja a ferramenta que procuramos. 2) Descompacte o arquivo e mova o seu conteúdo para o diretório da sua aplicação PHP. No exemplo importaremos a classe WSDLCreator que estará no diretório php2wsdl. 3) Crie a classe abaixo na raiz da sua aplicação: Código para Calculadora.php: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <? class Calculadora{ /** * Soma dois valores * * @param float $n1 * @param float $n2 * @return float */ public function somar($n1, $n2){ return ($n1 + $n2); } } ?> Veja que esta classe contém um método somar() que recebe dois valores numéricos e retorna um outro valor númerico. Note que inseri a documentação correspondente para facilitar o trabalho do php2wsdl. 4) Vamos agora escrever o documento PHP que fará a ligação entre o php2wsdl e a classe Calculadora. Veja o código a seguir: Código para gerar_wsdl.php: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <? // importamos a classe WSDLCreator.php require("php2wsdl/WSDLCreator.php"); // informamos o nome do namespace e o endereço do arquivo WSDL $wsdl_creator = new WSDLCreator("CalculadoraWSDL", "http://www.arquivodecodigos.net/estudos_soap/arquivo.wsdl"); // adicionamos a classe Calculadora $wsdl_creator->addFile("Calculadora.php"); // agora indicamos a URL para acessar os métodos da classe Calculadora $wsdl_creator->addURLToClass("Calculadora", "http://www.arquivodecodigos.net/estudos_soap/servidor.php"); // criamos o arquivo WSDL $wsdl_creator->createWSDL(); // e o salvamos com o nome desejado $wsdl_creator->saveWSDL("arquivo.wsdl"); ?> Neste momento já podemos executar o arquivo gerar_wsdl.php. Abra-o no seu navegador e verifique o arquivo "arquivo.wsdl" gerado. Sua estrutura será algo como: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?xml version='1.0' encoding='UTF-8'?> <!-- WSDL file generated by PHP WSDLCreator (http://www.protung.ro) --> <definitions name="CalculadoraWSDL" targetNamespace="urn:CalculadoraWSDL" xmlns:typens="urn:CalculadoraWSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="somar"> <part name="n1" type="xsd:float"></part> <part name="n2" type="xsd:float"></part> </message> <message name="somarResponse"> <part name="somarReturn" type="xsd:float"></part> </message> <portType name="CalculadoraPortType"> <operation name="somar"> <documentation>Soma dois valores</documentation> <input message="typens:somar"></input> <output message="typens:somarResponse"></output> </operation> </portType> <binding name="CalculadoraBinding" type="typens:CalculadoraPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"> </soap:binding> <operation name="somar"> <soap:operation soapAction="urn:CalculadoraAction"></soap:operation> <input> <soap:body namespace="urn:CalculadoraWSDL" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> </soap:body> </input> <output> <soap:body namespace="urn:CalculadoraWSDL" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> </soap:body> </output> </operation> </binding> <service name="CalculadoraWSDLService"> <port name="CalculadoraPort" binding="typens:CalculadoraBinding"> <soap:address location="http://www.arquivodecodigos.net/estudos_soap/servidor.php"> </soap:address> </port> </service> </definitions> Obteve algo parecido? Vamos continuar então. 5) Agora que já criamos a classe Calculadora para representar as operações do nosso web service e já geramos o arquivo WSDL, chegou a hora de criar o servidor SOAP. Veja o código: Código para servidor.php: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <? // importamos a class Calculadora require("Calculadora.php"); // criamos uma nova instância da classe SoapServer fornecendo o arquivo WSDL $servidor = new SoapServer('arquivo.wsdl'); // definimos a classe responsável por executar os métodos descritos no WSDL $servidor->setClass("Calculadora"); // e finalmente gerenciamos a requisição $servidor->handle(); ?> Note que nunca chamamos servidor.php diretamente no navegador. Em vez disso efetuamos uma chamada ao arquivo "arquivo.wsdl" a partir da página cliente.php e o próprio arquivo WSDL se encarrega de fazer a ponte com o servidor.php. Veja agora o código para o cliente.php: Código para cliente.php: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <? // vamos evitar que o arquivo WSDL seja colocado no cache ini_set("soap.wsdl_cache_enabled", "0"); try{ // definimos o endereço do arquivo WSDL $cliente = new SoapClient("http://www.arquivodecodigos.net/estudos_soap/arquivo.wsdl"); // disparamos o método somar(); $resultado = $cliente->somar(4, 11); // mostramos o resultado echo "A soma dos dois valores é: " . $resultado; } catch(SoapFault $erro){ // houve algum erro? var_dump($e); } ?> 6) Penso que já estamos prontos para o teste final. Se você seguiu todos os passos atenciosamente, já pode chamar o arquivo cliente.php no seu navegador. Se tudo correr bem, você verá o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- A soma dos dois valores é: 15 |
Link para compartilhar na Internet ou com seus amigos: |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como retornar o índice da primeira ocorrência de um elemento em um array do JavaScript usando a função indexOf()Quantidade de visualizações: 2131 vezes |
Em algumas ocasiões nós precisamos obter e retornar o índice da primeira ocorrência de um determinado elemento em um array JavaScript. Para isso podemos usar a funções indexOf(). Se o elemento não puder ser encontrado, o valor -1 é retornado. Veja um exemplo de seu uso: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <script type="text/javascript"> var valores = new Array(1, 2, 3, 2, 2, 4, 5); // vamos obter o índice da primeira ocorrência // do elemento com o valor 2 var indice = valores.indexOf(2); window.alert("Elemento encontrado no índice: " + indice); </script> Execute o código e veja que o elemento foi encontrado no índice 1, ou seja, na segunda posição do array, já que os índices de vetor e matriz em JavaScript começam a partir de 0. Experimente pesquisar o valor 50 e verá que o valor retornado é -1, indicando que o elemento não foi encontrado. |
C++ ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como usar vetores e matrizes (arrays) na linguagem C++Quantidade de visualizações: 37264 vezes |
Vetores e matrizes, também chamados de arrays em programação, são grupos consecutivos de locais na memória que possuem o mesmo tipo de dados, ou seja, um vetor ou matriz em C++ pode conter apenas elementos do mesmo tipo. Um vetor é uma matriz de um coluna e várias linhas, enquanto uma matriz é a matriz propriamente dita, ou seja, que possui várias linhas e várias colunas. Veja um trecho de código no qual temos um vetor contendo 5 elementos do tipo int: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]) { // declara e inicializa a matriz int valores[5] = {65, 3, 8, 41, 12}; // exibe os elementos da matriz for(int i = 0; i < 5; i++){ cout << "Posição: " << i << " - Valor: " << valores[i] << endl; } system("PAUSE"); // pausa o programa return 0; } Ao executarmos este código nós teremos o seguinte resultado: Posição: 0 - Valor: 65 Posição: 1 - Valor: 3 Posição: 2 - Valor: 8 Posição: 3 - Valor: 41 Posição: 4 - Valor: 12 Pressione qualquer tecla para continuar. . . Aqui nós usamos a técnica de declarar e inicializar o vetor em uma mesma linha. Em seguida usamos um laço para percorrer todos os elementos. Veja que os elementos do vetor são acessados usando um índice que começa em 0 e vai até a quantidade de elementos menos 1. Veja agora um trecho de código que declara um vetor e inicializa seus elementos usando um laço for: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; int main(int argc, char *argv[]) { // declara a matriz int valores[5]; // inicializa os elementos usando um laço for(int i = 0; i < 5; i++){ valores[i] = 2 * i; } // exibe os elementos da matriz for(int i = 0; i < 5; i++){ cout << "Posição: " << i << " - Valor: " << valores[i] << endl; } system("PAUSE"); // pausa o programa return 0; } Ao executarmos este código nós teremos o seguinte resultado: Posição: 0 - Valor: 0 Posição: 1 - Valor: 2 Posição: 2 - Valor: 4 Posição: 3 - Valor: 6 Posição: 4 - Valor: 8 Pressione qualquer tecla para continuar. . . É importante notar que, se não inicializados, os valores dos elementos de um vetor poderão guardar valores aleatórios. Jamais confie que eles terão o valor 0 por padrão. |
Java ::: Dicas & Truques ::: Input e Output (Entrada e Saída) |
Java para iniciantes - Como usar a classe File em suas aplicações JavaQuantidade de visualizações: 10474 vezes |
A classe File, contida no pacote java.io, é uma representação abstrata de nomes de arquivos e diretórios. Veja sua posição na hierarquia de classes Java:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- java.lang.Object java.io.File Esta classe implementa as interfaces: Serializable e Comparable<File>. Instâncias desta classe são imutáveis, ou seja, uma vez criado, o caminho abstrato representado por um objeto File nunca mudará. É importante observar que, ao criar uma instância de File, como no código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- File arquivo = new File("C:\\", "texto.txt"); o arquivo "texto.txt" não será criado. O que temos é a construção de um objeto File. Da mesma forma, quando destruímos um objeto File, o arquivo representado por ele no sistema não será excluído. |
C ::: Dicas & Truques ::: Data e Hora |
Como formatar datas e horas em C usando a função strftime() da linguagem CQuantidade de visualizações: 8020 vezes |
A função strftime() pode ser usada quando queremos formatar valores de datas e horas em C. Esta função, presente no header <time.h>, possui a seguinte assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr); O parâmetro strDest é um ponteiro para uma matriz de caracteres que receberá uma string contendo a data e/ou hora formatada. O parâmetro maxsize é a quantidade de caracteres que serão copiados para a matriz de caracteres alvo da operação. O parâmetro format contém os especificadores que serão substituídos durante a formatação. Finalmente, timeptr é um ponteiro para uma estrutura tm contendo as informações de data e hora. O retorno da função é a quantidade de caracteres copiados para a matriz strDest. Veja um trecho de código no qual formatamos e exibimos a data atual no formato longo e de acordo com as configurações regionais para o Português Brasileiro: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <time.h> #include <locale.h> int main(int argc, char *argv[]){ // vamos definir a localização para o Português do Brasil setlocale(LC_ALL, "Portuguese_Brazil"); time_t data_hora_segundos; // guarda os segundos deste 01/01/1970 struct tm *timeinfo; // declara uma estrutura tm time(&data_hora_segundos); // preenche a variável data_hora_segundos // preenche a estrutura timeinfo timeinfo = localtime(&data_hora_segundos); // um buffer para receber a data formatada char data_formatada[80]; // vamos formatar strftime(data_formatada, 80, "%A, %d de %B de %Y", timeinfo); // vamos exibir o resultado printf("Resultado da formatação: %s\n\n", data_formatada); system("PAUSE"); return 0; } O resultado da execução deste código será algo como: Resultado da formatação: segunda-feira, 23 de abril de 2011 Veja abaixo os especificadores de formatação usadas pela função strftime(): %a - Nome do dia da semana na forma abreviada. Ex: seg. %A - Nome completo do dia da semana. Ex: terça-feira. %b - Nome do mês abreviado. Ex: abr. %B - Nome completo do dia do mês. Ex: abril %c - Representação de data e hora. Ex: 23/4/2011 23:00:37. %d - Dia do mês (01-31). %H - Hora no formato 24 horas (00-23). %I - Hora no formato 12 horas (01-12). %j - Dia do ano (001-366). %m - Mês como um número decimal (01-12). %M - Minutos (00-59). %p - AM ou PM. %S - Segundos (00-61). %U - Número da semana tendo o primeiro domingo como o primeiro dia da primeira semana do ano (00-53). %w - Dia da semana como um número decimal tendo o domingo como 0 (0-6). %W - Número da semana tendo a primeira segunda-feira como o primeiro dia da primeira semana do ano (00-53). %x - Representação de data. Ex: 23/4/2011. %X - Representação de horas. Ex: 23:00:37. %y - Ano de dois dígitos (00-99). %Y - Ano com quatro dígitos. %Z - Nome ou abreviação do fuso horário. %% - Um sinal de porcentagem. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Métodos - Exercícios Resolvidos de Java - Ex. 4 - Um método estático que recebe dois números inteiros e retorna o maior delesQuantidade de visualizações: 3872 vezes |
Pergunta/Tarefa: Escreva um método Java que recebe dois números inteiros e retorna o maior deles. Este método deverá ter a seguinte assinatura: public static int maior(int a, int b){ // sua implementação aqui } Sua saída deverá ser parecida com: Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar que o usuário informe dois numeros inteiros System.out.print("Informe o primeiro número: "); int num1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo número: "); int num2 = Integer.parseInt(entrada.nextLine()); // obtém o número maior int numeroMaior = maior(num1, num2); System.out.println("O numero maior é: " + numeroMaior); System.out.println("\n"); } // um método estático que recebe dois números inteiros e retorna o maior deles public static int maior(int a, int b){ if(a > b){ return a; } else{ return b; } } } |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
JavaScript - Como calcular o seno de um número ou ângulo em JavaScript usando a função sin() do objeto Math |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |