Davi RJ 0 Denunciar post Postado Junho 17, 2015 Boa tarde a todos, Acho que a minha dúvida é mais questão de conceito em si. Estou sendo novato mesmo, comecei agora a trabalhar com o webservice e me passaram como regrar usar o PHP. Minha dúvida é o seguinte.... Como eu começo a poder inserir os registros que o cliente que ira consumir meu webservice vai me enviar. Eu criei o já o servidor.php que gera o wsdl. Mas como faço para receber o XML que cliente irá enviar e inserir na minha base de dados? Vale dizer que minha base de dados será Oracle. Segue abaixo o código do servidor PHP: require_once 'lib/nusoap.php'; $server = new soap_server(); $server->configureWSDL('addressbook_wsdl', 'urn:addressbook_wsdl'); $server->soap_defencoding = 'UTF-8'; $server->wsdl->addComplexType('Processo_seletivo', 'complexType', 'struct', 'all', '', array( 'requisicao' => array('name' => 'requisicao', 'type' => 'xsd:int'), 'matricula_gestor' => array('name' => 'matricula_gestor', 'type' => 'xsd:int'), 'data_requisicao' => array('name' => 'data_requisicao', 'type' => 'xsd:string'), 'cod_entidade' => array('name' => 'cod_entidade', 'type' => 'xsd:int'), 'desc_entidade' => array('name' => 'desc_entidade', 'type' => 'xsd:string'), 'cod_setor' => array('name' => 'cod_setor', 'type' => 'xsd:int'), 'desc_setor' => array('name' => 'desc_setor', 'type' => 'xsd:string'), 'cod_processo' => array('name' => 'cod_processo', 'type' => 'xsd:int'), 'desc_processo' => array('name' => 'desc_processo', 'type' => 'xsd:string'), 'cod_cargo' => array('name' => 'cod_cargo', 'type' => 'xsd:int'), 'desc_cargo' => array('name' => 'desc_cargo', 'type' => 'xsd:string'), 'cod_origem_vaga' => array('name' => 'cod_origem_vaga', 'type' => 'xsd:int'), 'matricula_subs' => array('name' => 'matricula_subs', 'type' => 'xsd:int'), 'tipo_requisicao' => array('name' => 'tipo_requisicao', 'type' => 'xsd:int'), 'carga_horaria' => array('name' => 'carga_horaria', 'type' => 'xsd:string'), 'local_trabalho' => array('name' => 'local_trabalho', 'type' => 'xsd:string'), 'salario' => array('name' => 'salario', 'type' => 'xsd:string'), 'horario' => array('name' => 'horario', 'type' => 'xsd:string'), 'viagem' => array('name' => 'viagem', 'type' => 'xsd:int'), 'habilitacao' => array('name' => 'habilitacao', 'type' => 'xsd:string'), 'categoria' => array('name' => 'categoria', 'type' => 'xsd:string'), 'pcd' => array('name' => 'pcd', 'type' => 'xsd:string'), 'formacao' => array('name' => 'formacao', 'type' => 'xsd:string'), 'area_atuacao' => array('name' => 'area_atuacao', 'type' => 'xsd:string'), 'conhecimentos' => array('name' => 'conhecimentos', 'type' => 'xsd:string'), 'exp_profissional_eliminatoria' => array('name' => 'exp_profissional', 'type' => 'xsd:string'), 'exp_profissional' => array('name' => 'exp_profissional', 'type' => 'xsd:string'), 'atrib_cargo' => array('name' => 'atrib_cargo', 'type' => 'xsd:string'), 'competencias' => array('name' => 'competencias', 'type' => 'xsd:string'), 'conteudo_prova_conhecimento' => array('name' => 'conteudo_prova_conhecimento', 'type' => 'xsd:string'), 'conteudo_prova_tecnica' => array('name' => 'conteudo_prova_tecnica', 'type' => 'xsd:string'), 'conteudo_prova_pratica' => array('name' => 'conteudo_prova_pratica', 'type' => 'xsd:string'), 'etapa' => array('name' => 'etapa', 'type' => 'xsd:string'), 'cod_jornal' => array('name' => 'cod_jornal', 'type' => 'xsd:int'), 'desc_jornal' => array('name' => 'desc_jornal', 'type' => 'xsd:string') ) ); $server->wsdl->addComplexType('AddressBook', 'complexType', 'array', '', 'SOAP-ENC:Array', array(), array( array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Processo_seletivo[]') ), 'tns:Processo_seletivo' ); $server->register('insertProcesso_seletivo', array('new_contact' => 'tns:Processo_seletivo'), array('return' => 'xsd:boolean'), 'addressbook_wsdl', 'addressbook_wsdl#insertProcesso_seletivo', 'rpc', 'encoded', 'Insert contact' ); $request = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($request); Caso esteja repetido, me desculpem. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Junho 17, 2015 Já que está criando o WebService, seria interessante utilizar SOAP Server, do PHP 5. NuSOAP foi desenvolvido para o PHP 4. A "graça" de se trabalhar com essas bibliotecas (ambas no caso) é não se preocupar com o XML, e sim apenas com os formatos especificados. Na linha 62, você define o método insertProcesso_seletivo, que irá receber new_contact e, por sua vez, new_contact é do tipo Processo_seletivo. Dessa forma, você irá receber apenas uma variável no método insertProcesso_seletivo. O seu método deve ser mais ou menos assim: function insertProcesso_seletivo($new_contact) { /** código de execução **/ } O nome da variável, na função, é um tanto irrelevante (do ponto de vista do WSDL). Visto que ele apenas especifica formatos, tipos, pontos de entrada e saída. Compartilhar este post Link para o post Compartilhar em outros sites
Davi RJ 0 Denunciar post Postado Junho 17, 2015 Muito Obrigado! Realmente eu li ainda a pouco que o NuSoap está em bem parado! Vou seguir o seu conselho e partir para o SOAP Server, do PHP 5 Mas você tem por acaso algum exemplo além do manual? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Junho 18, 2015 Eu aprendi lendo vários sites e exemplos. Um dos que mais me ajudou foi o que segue abaixo: http://www.phpeveryday.com/articles/Web-Services-WSDL-Creating-SOAP-Server-P477.html O link da definição da W3C: http://www.w3.org/TR/soap12-part1/ E o link de tipos permitidos: http://www.w3.org/TR/xmlschema-2/#defn-coss É importante, também, utilizar o SoapUI para validar o WSDL, ele facilita muito no desenvolvimento. Compartilhar este post Link para o post Compartilhar em outros sites
Davi RJ 0 Denunciar post Postado Junho 22, 2015 Opa! obrigado! Compartilhar este post Link para o post Compartilhar em outros sites