WSDL NuSoap

Enviada por Marcos M. 
Marcos M.
WSDL NuSoap
25 de April de 2011 às 04:37PM
Olá pessoal, tenho um webservice ao qual funcionava sem a utilização de wsdl, mas por alterações na politica da empresa vamos passar todos os serviços a usarem wsdl.

Esse WS é um serviço de cadastro de envio de emails, eu mando dados do remetente, destinatário, dados do conteudo do email, dados de cópias (cc, bcc) e de arquivos em anexo.

Quando rodo o servidor para me mostrar o wsdl ele me mostra o XML do WSDL, quando uso o programa SoapUi ele me traz quase todos os dados, menos os dados do array das cópias (CC e BCC) e dos arquivos, queria saber se alguém sabe como resolver o problema para o Nusoap retornar corretamente os campos de cópias e arquivos

o código do server:

<?php
#--------------------------------------------------------------------------------------------
# Sistema de Webservice
#--------------------------------------------------------------------------------------------
// includes necessários
require_once "library/nusoap/nusoap.php";

#--------------------------------------------------------------------------------------------
// inicializa objetos e classes
$server = new soap_server;

#--------------------------------------------------------------------------------------------
// inicializa suporte a WSDL
$server->configureWSDL('roveretiws', 'urn:roveretiws');
$server->wsdl->schemaTargetNamespace = 'urn:roveretiws';

#--------------------------------------------------------------------------------------------
// registro de tipos

#--------COMPLEXOS-----------------------------

$server->wsdl->addComplexType(
'retorno',
'complexType',
'struct',
'all',
'',
array(
'resultado' => array('name' => 'resultado', 'type' => 'xsd:string'),
'mensagem' => array('name' => 'mensagem', 'type' => 'xsd:string'),
'erro' => array('name' => 'erro', 'type' => 'xsd:string')
)
);

$server->wsdl->addComplexType(
'copia',
'complexType',
'struct',
'all',
'',
array(
'dsc_email_copia' => array('name' => 'dsc_email_copia','type' => 'xsd:string'),
'nom_remetente_copia' => array('name' => 'nom_remetente_copia','type' => 'xsd:string'),
'dsc_tipo_copia' => array('name' => 'dsc_tipo_copia', 'type' => 'xsd:string')
)
);


$server->wsdl->addComplexType(
'copiaArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:copia[]')
),
'tns:copia[]'
);

$server->wsdl->addComplexType(
'arquivo',
'complexType',
'struct',
'all',
'',
array(
'dsc_prefixo'=> array('name' => 'dsc_prefixo','type' => 'xsd:string'),
'dsc_posfixo'=> array('name' => 'dsc_posfixo','type' => 'xsd:string'),
'ind_comprimido'=> array('name' => 'ind_comprimido','type' => 'xsd:string'),
'dsc_tipo_compressao'=> array('name' => 'dsc_tipo_compressao','type' => 'xsd:string'),
'dsc_conteudo'=> array('name' => 'dsc_conteudo','type' => 'xsd:string')
)
);

$server->wsdl->addComplexType(
'arquivoArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:arquivo[]')
),
'tns:arquivo[]'
);

#--------OPERACOES-----------------------------
$server->register ( 'IncluirEmail',
array(
'nome_remetente'=>'xsd:string',
'email_remetente'=>'xsd:string',
'nome_destinatario'=>'xsd:string',
'email_destinatario'=>'xsd:string',
'assunto'=>'xsd:string',
'conteudo'=>'xsd:string',
'codigo_usuario'=>'xsd:string',
'nome_usuario'=>'xsd:string',
'chave_acesso'=>'xsd:string',
'cod_prioridade'=>'xsd:string',
'ind_email_html'=>'xsd:string',
'copias'=>'tns:copiaArray',
'arquivos'=>'tns:arquivoArray'),
array('return'=>'tns:retorno'),
'urn:roveretiws',
'urn:roveretiws#IncluirEmail',
'rpc',
'encoded',
'Incluir email');

#--------------------------------------------------------------------------------------------
// Métodos


// requisição de inclusao de email
function IncluirEmail($arrDados) {
conteúdo.....
}

#--------------------------------------------------------------------------------------------
// Requisições para uso do serviço
$HTTP_RAW_POST_DATA = isset ( $HTTP_RAW_POST_DATA ) ? $HTTP_RAW_POST_DATA : '';
$server->service ( $HTTP_RAW_POST_DATA );
?>


Ao utilizar o SoapUi, o programa faz a leitura do WSDL e me retorna o xml:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:roveretiws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<soapenv:Header/>
<soapenv:Body>
<urn:IncluirEmail soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<nome_remetente xsi:type="xsd:string">Nome do Remetente</nome_remetente>
<email_remetente xsi:type="xsd:string">remetente@remetente.com.br</email_remetente>
<nome_destinatario xsi:type="xsd:string">Destinatario</nome_destinatario>
<email_destinatario xsi:type="xsd:string">destinatario@destinatario.com</email_destinatario>
<assunto xsi:type="xsd:string">Olá</assunto>
<conteudo xsi:type="xsd:string">oi</conteudo>
<codigo_usuario xsi:type="xsd:string">1</codigo_usuario>
<nome_usuario xsi:type="xsd:string">nome_usuario</nome_usuario>
<chave_acesso xsi:type="xsd:string">29ce0c931298a24de83d19228043ed20</chave_acesso>
<cod_prioridade xsi:type="xsd:string">3</cod_prioridade>
<ind_email_html xsi:type="xsd:string">S</ind_email_html>
<copias xsi:type="urn:copiaArray" soapenc:arrayType="urn:copia[]"/>
<arquivos xsi:type="urn:arquivoArray" soapenc:arrayType="urn:arquivo[]"/>
</urn:IncluirEmail>
</soapenv:Body>
</soapenv:Envelope>


Dentro das TAGS copias e arquivos deveria vir as tags referentes ao conteúdo das mesmas. Já procurei vários sites com pessoas que tiveram problemas parecidos mas nenhuma solução me ajudou nesse problema.

Agradesço desde já a ajuda.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.