Erro gerando cliente de webservice

2 respostas
R

Olá pessoal.

Estou criando um cliente (em java) para um webservice (gerado no delph 7). Para tal estou utilizando o axis.

Quando tento a seguinte operação:

try {
			String wsURL = "http://server-call/webcliente/WebAgenda.dll/wsdl/IWebagenda?wsdl";

			Object[] params = { id, nome, nasc, sexo, doc, tel, cel, conv, mat, temp};

			Service service = new Service();

			Call call = (Call) service.createCall();

			call.setTargetEndpointAddress(wsURL);

			call.setOperationName("ReceberCliente");
			
			String ret = (String) call.invoke(params);
			
			System.out.println("Resultado: " +ret);
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
			e.printStackTrace();

… no ponto do String ret = (String) call.invoke(params); é gerada a exceção mostrada abaixo:

10/06/2008 09:18:01 org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
; nested exception is: 
	org.xml.sax.SAXException: Bad envelope tag:  definitions
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: Bad envelope tag:  definitions
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Bad envelope tag:  definitions
	at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
	at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3084)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:912)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at TesteClienteWSURL.main(TesteClienteWSURL.java:48)

	{http://xml.apache.org/axis/}hostname:desenvolv-03

org.xml.sax.SAXException: Bad envelope tag:  definitions
	at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at TesteClienteWSURL.main(TesteClienteWSURL.java:48)
Caused by: org.xml.sax.SAXException: Bad envelope tag:  definitions
	at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
	at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3084)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:912)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	... 9 more

No entando ainda não consegui descobrir o motivo desse erro.

Eu crio outros serviços aqui no eclipse e consigo criar os clientes para eles normalmente. Porém, esse serviço, gerado pelo Delphi 7, não consigo criar o cliente.

Sabem o motivo do erro ou o que pode estar acontecendo?

Abraços.

2 Respostas

G

Aconteceu o mesmo erro comigo.

Efetuei a revalidação dos campos no envelope de retorno, e realmente estava faltando setar um campo.

Faça a conferência do envelope de retorno.

Como o WSDL é baseado no SOAP, você pode utilizar o SOAP_IU, no qual pode-se validar a entrada.

R

Rogério, obrigado pela resposta.

Assim...

não sei se consegui entender direito a sua resposta.

Você me pediu para verificar o retorno do serviço correto?

Que no caso me retorna uma string (que tá fixada lá no serviço para sempre me devolver uma mensagem "OK").

Se ajudar aqui segue a descrição do wsdl

<?xml version="1.0" encoding="utf-8" ?> 
- <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="IWebagendaservice" targetNamespace="http://tempuri.org/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
- <message name="ReceberCliente0Request">
  <part name="id" type="xs:string" /> 
  <part name="Nome" type="xs:string" /> 
  <part name="Nasc" type="xs:string" /> 
  <part name="Sexo" type="xs:string" /> 
  <part name="Doc" type="xs:string" /> 
  <part name="Tel" type="xs:string" /> 
  <part name="Cel" type="xs:string" /> 
  <part name="Conv" type="xs:string" /> 
  <part name="Mat" type="xs:string" /> 
  <part name="Temp" type="xs:string" /> 
  </message>
- <message name="ReceberCliente0Response">
  <part name="return" type="xs:string" /> 
  </message>
- <portType name="IWebagenda">
- <operation name="ReceberCliente">
  <input message="tns:ReceberCliente0Request" /> 
  <output message="tns:ReceberCliente0Response" /> 
  </operation>
  </portType>
- <binding name="IWebagendabinding" type="tns:IWebagenda">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <operation name="ReceberCliente">
  <soap:operation soapAction="urn:WebagendaIntf-IWebagenda#ReceberCliente" style="rpc" /> 
- <input message="tns:ReceberCliente0Request">
  <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:WebagendaIntf-IWebagenda" /> 
  </input>
- <output message="tns:ReceberCliente0Response">
  <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:WebagendaIntf-IWebagenda" /> 
  </output>
  </operation>
  </binding>
- <service name="IWebagendaservice">
- <port name="IWebagendaPort" binding="tns:IWebagendabinding">
  <soap:address location="http://10.30.3.129/webcliente/WebAgenda.dll/soap/IWebagenda" /> 
  </port>
  </service>
  </definitions>

Obrigado..

Abraços.

Criado 10 de junho de 2008
Ultima resposta 10 de jun. de 2008
Respostas 2
Participantes 2