Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davi RJ

NUSOAP PHP - Como inserir os registros (oracle)

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.