Montagem requisicao soap: body montado errado

0 respostas
ivconte

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??

Criado 1 de outubro de 2008
Respostas 0
Participantes 1