Pessoal,
O Body da minha requisicao soap nao esta formatando o xml corretamente e o namespace q eu seto no header eu nao sei como setar o mesmo dentro do body. Estou utilizando axis e java 1.5
Adicionando um parametro ao header
SOAPHeaderElement payloadInfo = new SOAPHeaderElement( "",
"PayloadInfo" );
SOAPEnvelope env = new SOAPEnvelope();
Name userName = env.createName("Username");
Name password = env.createName("Password");
Name idParceiro = env.createName("IDParceiro");
Name xmlElement = env.createName("Xml");
env.setNamespaceURI("http://www.xpto.net/xmlwebservices2/");
payloadInfo.addAttribute(userName, "XPTO");
payloadInfo.addAttribute(password, "1234");
payloadInfo.addAttribute(idParceiro, "11111");
payloadInfo.setNamespaceURI("http://www.xpto.net/xmlwebservices2/"); //namespace
call.addHeader(payloadInfo);
Montagem do Call :
Call call = (Call) new Service().createCall();
call.setTargetEndpointAddress("https://webservices.xpto.com.br:440/v3/ota/XPTO.asmx");
call.setOperationName(new javax.xml.namespace.QName("http://www.xpto/xmlwebservices2/", "xmlConsulta")); //tentativa de usar o mesmo namespace do header
call.setUseSOAPAction(true);
call.setEncodingStyle(null);
call.setSOAPActionURI("http://www.xpto/xmlwebservices2/xmlConsulta");
Mensagem SOAP gerada:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:PayloadInfo Username="XPTO" Password="1234" IDParceiro="11111"
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:ns1="http://www.xpto/xmlwebservices2/"/>
</soapenv:Header>
<soapenv:Body>
<xmlConsulta xmlns="http://www.xpto/xmlwebservices2/">
<arg0 xsi:type="xsd:string"><?xml version="1.0"
encoding="UTF-8"
standalone="yes"?><OTA_SearchRQ
PrimaryLangID="pt-BR" Version="1.0"
Target="Test" TimeStamp="2008-10-01T14:26:44"
EchoToken="1234"
xmlns="http://www.opentravel.org/OTA/2003/05"><POS><Source><RequestorID
ID="127553" Type="4"
URL="http://www.xpto.com.br"/></Source></POS><Criteria><Criterion
ImportanceType="Mandatory"><HotelRef
HotelCityCode="BEL"/></Criterion></Criteria></OTA_HotelSearchRQ></arg0>
</xmlConsulta>
</soapenv:Body>
</soapenv:Envelope>
Erro apos execucao:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultSubcode:
faultString: O servidor não pôde processar a solicitação. ---> Referência de objeto não definida para uma instância de um objeto.
faultActor:
faultNode:
faultDetail:
eu queria que o ns1 que aparece no <Payload> tambem fosse usado no
<xmlConsulta>. Como posso setar isso com axis??