Vídeo-aula: Criando um webservice em php [Aula II]

Fala galera,

Seguindo com a parte 2 das vídeo-aulas sobre como criar um webservice em php. Nessa aula configuro a o webservice implementando o retorno xml através da classe que crimos na aula I. Faço também o upload dos arquivos e os testes.

Qualquer dúvida utilize a caixa de comentários.

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Muito Rafael, gostei muito e mim trouce para ideias para meus futuros sistemas. vlw pela contribuição de tempo e conhecimento.

  2. Olá…Sou um dos criadores do blog bsdinfo e estava procurando matérias sobre Php. Sinceramente vc está de Parabéns. Estou terminando curso de Php na 4Linux e acabei encontrando seu blog. Virou referência.

    Parabéns…

  3. Meu código ta dando uma porrada de erros: Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:1: parser error : Space required after the Public Identifier in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:1: parser error : SystemLiteral ” or ‘ expected in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:1: parser error : SYSTEM or PUBLIC, the URI is missing in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:19: parser error : Opening and ending tag mismatch: hr line 17 and body in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:19: parser error : Opening and ending tag mismatch: body line 4 and html in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://wbsr.desolhotsasa.com.br/index.php?id=1:20: parser error : Premature end of data in tag html line 2 in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: in /home/desolhots/public_html/acessar.php on line 2

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/desolhots/public_html/acessar.php on line 2

    1. Olá João,

      Acredito que você resolvendo o primeiro erro: “Space required after the Public Identifier” os outros automaticamente estarão resolvidos também.

      Dê uma olhada na estrutura do XML que está sendo retornado e na URL que está sendo chamada e vê se está tudo correto.

      Abs

  4. Olá rafael, uma dúvida, onde que entra aí no caso do webservice, o soap? por ex. andei olhando alguns exemplos com o soapserver e soapcliente; seria uma alternativa?
    grato

  5. Boa tarde Rafael!

    Estou fazendo meu TCC e vi suas aulas para criar um web service.

    Tive um problema, entrando na página acessar.php, ele dá esse erro:

    Warning: simplexml_load_file(): http://localhost/PhpProject1/index1.php?id=2:2: parser error : Start tag expected, ‘<' not found in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\PhpProject1\acessar.php on line 3 Warning: simplexml_load_file(): Notice: Undefined property: stdClass::$nome in C:\Program Files\Apache Software in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\PhpProject1\acessar.php on line 3 Warning: simplexml_load_file(): ^ in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\PhpProject1\acessar.php on line 3

    Tentei resolver aqui, mas não consegui…

    O que pode ser este erro?

      1. Olá Rafael,

        Na linha 3, tem o link:

        $xml = simplexml_load_file(“http://localhost/PhpProject1/index1.php?id=2”);

        *Esse id 2 tem no banco q criei e este é o caminho onde minha página está salva.

        Se quiser, posso colar conteúdo do .xml para vc dar uma olhada, pois já revisei e não estou encontrado nada de errado, talvez vc possa encontrar.

  6. Olha o código
    XML
    xml .= “\n” ;
    }

    public function openTag($name){
    $this->addTab();
    $this->xml .= “\n”;
    $this->tab++;
    }

    public function closeTag($name){
    $this->tab–;
    $this->addTab();
    $this->xml .= “\n”;
    }

    public function setValue($value){
    $this->xml .= “$value\n”;
    }

    private function addTab(){
    for($i = 1; $i tab; $i++){
    $this->xml .= “\t”;
    }
    }

    public function addTag($name, $value){
    $this->addTab();
    $this->xml .= “$value\n”;
    }

    public function __toString() {
    return $this->xml;
    }
    }

    ?>

    INDEX
    openTag(“response”);

    if($idproduto == ”){
    $erro = 1;
    $msgerro = ‘Código inválido!’;
    }
    else{
    $rs = mysql_query(“SELECT * FROM produtos WHERE id = $idproduto”);
    if(mysql_num_rows($rs) > 0){
    $reg = mysql_fetch_object($rs);
    $xml->addTag(‘nome’, $reg->nome);
    $xml->addTag(‘preco’, $reg->preco);
    }else{
    $erro = 2;
    $msgerro = “Produto não encontrado”;
    }
    }
    $xml->addTag(‘erro’, $erro);
    $xml->addTag(‘msgerro’, $msgerro);

    $xml->closeTag(“response”);

    echo $xml;

    ?>

    1. Olá Rodrigo,

      Dei uma olhada no projeto do Daniel e consegui verificar que o erro estava acontecendo na classe XML.Class.php

      Nao sei exatamente o que é, mas algo nela tinha sido implementado errado. Quando substitui o arquivo dele(Daniel) pelo meu o sistema funcionou perfeitamente.

      Logo, creio que o problema no seu projeto seja o mesmo.

      Entao, veja a video-aula novamente e veja o que estás implementando errado na sua classe.

      Abs!

  7. Cara pois mande seu projeto para o meu email, pq não consegui, deu o mesmo errinho!!
    fufufu.. Deve ser uma coisa bem besta e não percebo o q é..!

  8. Parabéns pelo o bem explicado tutorial, você só equivocou e por isso gerou erro para todos, na linha abaixo:
    mysql_query(“SELECT * FROM nome_da_tabela WHERE id = $idproduto”);

    Faltou o $rs no qual você faz a referência para a quantidade de linhas afetadas(mysql_num_rows($rs)) então corrigido fica assim:

    $rs = mysql_query(“SELECT * FROM nome_da_tabela WHERE id = $idproduto”);

    Um abraço

  9. Olá Rafael,
    eu segui todo seu passo a passo do Criando um Webservice em PHP e já revisei toda programação em conjunto a sua video aula. Porém, quando acesso o index.php ele me retorna corretamente o xml, mas quando tento acessar utilizando o acessar.php tanto no server local(onde esta hospedado a aplicação) como através de um outro servidor é apresentado o seguinte erro.

    Warning: simplexml_load_file() [function.simplexml-load-file]: http://MEU_SITE.com.br/ws/index.php:1: parser error : Start tag expected, ‘<' not found in /home/topdam/public_html/MEU_SITE.com.br/ws/acessar.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]:  in /home/topdam/public_html/MEU_SITE.com.br/ws/acessar.php on line 4

    Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/topdam/public_html/MEU_SITE.com.br/ws/acessar.php on line 4

    sendo que a linha 4 é cotem o código
    $xml = simplexml_load_file(“MEU_SITE.com.br/ws/index.php”);

    Você saberia me dizer porque isso ocorre?
    Será que tem haver com algum tipo de segurança do servidor?

    Abs,
    Théo

  10. Rafael,
    realizei testes da seguinte forma:

    Primeiro teste
    – criei um arquivo .xml;
    – inseri no servidor onde estão os arquivos Xml.Class.php, index.php e config.php.
    – no outro servidor o path mantive o mesmo caminho porem troquei index.php para meuarquivoXml.xml.
    Dessa forma o browser apresenta o xml, dessa forma notei consegui realizar uma prova de que o path esta correto.

    2 Teste
    – Acessei direto o index.php, tanto passando paramentro (id) como sem o parametro;
    – o browser apresentar o xml no codigo fonte correntamente contendo os valores;
    Então descartamos o problema de ser algo na Xml.Class.php ou na index.php

    O que da a impressão é que no meu arquivo index.php quando dou o “echo $xml; ” ele retorna uma objeto xml e não um arquivo e quando solicito no acessar utilizando o $xml = simplexml_load_file(“meusite/ws/index.php”); ele não consegue interpretar.

    Abs

        1. Olá Rafael,
          boa tarde!

          Primeiramente gostaria de agradece-lo pela atenção e rápido retorno. E desculpas pelo atraso na resposta.

          Acabei de enviar o e-mail conforme solicitado.

          Muito obrigado,
          Théo

  11. Primeiro parabéns pela excelente vídeo-aula.

    É possível você me enviar os códigos por e-mail?

    É possível também qual seria a diferença em usar um SOAP junto, é que pretendo utilizar o WebSevice para consumir via Andróid.

    Parabéns novamente.

    Obrigado.

  12. Fala Rafael, estou tendo problemas no meu projeto, o código xml gerado está com uma linha em branco no começo, não consigo ver onde está o problema, pode dar uma ajuda?

  13. Pelo que analisei, o que está acontecendo é que a index está retornando um arquivo que não é um xml. Se trocarmos o simplexml_load_file por file não dá o erro. Não sei se minha analise está correta.

  14. Olá Rafael! Massa teus tutoriais, encontrei por acaso no meio das minhas buscas por php. Segui essas duas vídeo aulas de webservice e codifiquei como você instruiu. Na hora de testar o arquivo local acessar.php, nada é exibido na tela. Tentei até jogar ele pra minha pasta ‘ws’ do meu servidor de testes mas mesmo assim nada é exibido, o que poderia ser?

  15. Muito bom Rafael, parabéns pela ótima explicação, mas fiquei como uma dúvida. Como ficaria o XML caso eu quisesse retornar uma lista de produtos?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *