Srs, eu tenho esse webservice:
@WebService(name="PessoaWS", targetNamespace="http://xxx.br/pessoa")
public class PessoaWS {
@WebMethod
public void colaborador(@WebParam(name="colaboradores") List colaboradores){
try {
Message esbMessage = SOAPProcessor.getMessage();
String sabao = esbMessage.getBody().get().toString();
System.out.println(sabao);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Esse servico é chamado por um cliente em php, inicialmente esta dessa maneira pq estou testando, tendo em vista q o cliente ainda nao esta pronto, mas vai conter as informacoes que mockei:
$client = new SoapClient(null, array(
'location' => "http://localhost:9000",
'uri' => "http://xxx.br/pessoa",
//'style' => SOAP_RPC,
'use' => SOAP_LITERAL,
'trace'=>true,
'soap_version' => SOAP_1_1));
$contrato1 = array('tipo_contrato' => 'Mensalista', 'carga_horaria' => '220');
$contrato2 = array('tipo_contrato' => 'Horista', 'carga_horaria' => '600');
$contratos = array($contrato1 , $contrato2);
$endereco1 = array('sem_numero' => 'False', 'numero' => '5456');
$endereco2 = array('sem_numero' => 'True' , 'numero' => '6000');
$enderecos = array($endereco1, $endereco2);
$telefone1 = array('numero' => '9999', 'tipo' => 'celular');
$telefone2 = array('numero' => '5555', 'tipo' => 'residencial');
$telefones = array($telefone1, $telefone2);
$email1 = array('email' => '9999', 'tipo' => 'pessoal');
$email2 = array('email' => '9999', 'tipo' => 'profissional');
$emails = array($email1, $email2);
$colaboradores = array('origem' => 'BennerRH' , 'codigo_origem' => '15431354', 'cpf' => '[telefone removido]' , 'nome' => 'Vaginia Hole' , 'rg' => '068974' ,
'rg_orgao_expedidor' => 'SSP/SC' ,'genero' => 'm' , 'data_nascimento' => '20/03/2000' , 'contratos'=>$contratos, 'enderecos'=> $enderecos,
'telefones'=> $telefones,'emails'=> $emails );
echo "<pre>";
var_dump($colaboradores);
$header = new SoapHeader(null, null, null);
$client->__setSoapHeaders($header);
$res = $client->colaborador(new SoapParam($colaboradores, "colaboradores"));
O soap que recebo no java tem o formato abaixo:
<SOAP-ENV:Body>
<ns1:colaborador>
<colaboradores>
<item>
<key>codigo_origem</key>
<value>15431354</value>
</item>
<item>
<key>data_nascimento</key>
<value>20/03/2000</value>
</item>
<item>
<key>contratos</key>
<value>
<ns2:Map>
<item>
<key>tipo_contrato</key>
<value>Mensalista</value>
</item>
<item>
<key>carga_horaria</key>
<value>220</value>
</item>
</ns2:Map>
<ns2:Map>
<item>
<key>tipo_contrato</key>
<value>Horista</value>
</item>
<item>
<key>carga_horaria</key>
<value>600</value>
</item>
</ns2:Map>
</value>
</item>
<item>
<key>enderecos</key>
<value>
<ns2:Map>
<item>
<key>sem_numero</key>
<value>False</value>
</item>
<item>
<key>numero</key>
<value>5456</value>
</item>
</ns2:Map>
<ns2:Map>
<item>
<key>sem_numero</key>
<value>True</value>
</item>
<item>
<key>numero</key>
<value>6000</value>
</item>
</ns2:Map>
</value>
</item>
<item>
<key>telefones</key>
<value>
<xsd:anyType>
<item>
<key>numero</key>
<value>5555</value>
</item>
<item>
<key>tipo</key>
<value>residencial</value>
</item>
</xsd:anyType>
<xsd:anyType/>
</value>
</item>
<item>
<key>emails</key>
<value>
<ns2:Map>
<item>
<key>email</key>
<value>9999</value>
</item>
<item>
<key>tipo</key>
<value>pessoal</value>
</item>
</ns2:Map>
<ns2:Map>
<item>
<key>email</key>
<value>9999</value>
</item>
<item>
<key>tipo</key>
<value>profissional</value>
</item>
</ns2:Map>
</value>
</item>
</colaboradores>
</ns1:colaborador>
</SOAP-ENV:Body>
O que eu gostaria de saber é se tem como eu fazzer com que o xml soap venha com outro formato. Como por exemplo:
<colaborador>
<codigo_origem>15431354</codigo_origem>
<cpf>[CPF removido]</cpf>
<nome>Pimpim Lenore Webert de La Grana</nome>
<rg>4.032.894-40</rg>
<contratos>
<contrato>
<tipo_contrato>Mensalista</tipo_contrato>
<carga_horaria>220</carga_horaria>
<cargo>Programador Pleno</cargo>
<funcao>Programador de Integração</funcao>
</contrato>
</contratos>
<enderecos>
<endereco>
<sem_numero>False</sem_numero>
<numero>5456</numero>
</endereco>
</enderecos>
<telefones>
<telefone>
<numero>48-9999-1234</numero>
</telefone>
</telefones>
<emails>
<email>
<email>[email removido]</email>
<tipo>Pessoal</tipo>
</email>
</emails>
</colaborador>