Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    3

    SAXException: SimpleDeserializer encountered a child element, which is NOT expected

    org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.

    Ciao a tutti!
    Ho un problema che mi sta bloccando: sto cercando di comunicare con un web service di un cliente utilizzando il JDK 1.5 e Axis 1.4.
    Più sotto ci sono il WSDL del web service e il codice java col quale cerco di invocarlo.
    Putroppo ottengo sempre lo stesso risultato: "org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. "

    Credo di aver capito che il SimpleDeserializer non riesce a deserializzare dei dati di input che non siano tipi primitivi... ma questo non mi risolve il problema ;-)

    Qualcuno sa dirmi per favore dove sto sbagliando?!?!
    Grazie mille!!!!!!!
    Ciao,
    Mirko

    Codice JAVA:
    codice:
    try {
         String nomeMetodo = "make";
         Call call = (Call) new Service().createCall();
         call.setTargetEndpointAddress(new URL                         ("http://www.meridiana.it/webservices/ws_search.asmx"));
    
         String XMLSecurityAccess = createXMLSecurityAccess(); // stringa in formato XML
         String XMLInputDataDetail = createXMLInputDataDetail(); // stringa in formato XML
    
         TWsInputData myTWsInputData = new TWsInputData(); // semplice oggetto con 2 proprietà String
         myTWsInputData.XMLSecurityAccess = XMLSecurityAccess;
         myTWsInputData.XMLInputDataDetail = XMLInputDataDetail;
    
         QName qn = new QName( "DsFlightSearch", "TWsInputData" ); 
         call.registerTypeMapping(TWsInputData.class, qn,
         new org.apache.axis.encoding.ser.BeanSerializerFactory(TWsInputData.class, qn), 
         new org.apache.axis.encoding.ser.BeanDeserializerFactory(TWsInputData.class, qn));
    
         call.setSOAPActionURI("http://tempuri.org/" + nomeMetodo);
         call.setUseSOAPAction(true); 
         call.setOperationName(nomeMetodo); 
    
         messaggio = (String)call.invoke(nomeMetodo, new Object[]{myTWsInputData});
    }
    catch (MalformedURLException ex) {
         messaggio = "errore: l'url non è esatta: " + ex;
    }catch (ServiceException ex) {
         messaggio = "errore: la creazione della chiamata è fallita: " + ex;
    }catch (AxisFault ex) {
         messaggio = "errore: l'invocazione del WS è fallita: " + ex;
    }
    finally{
         System.out.println(messaggio);
    }

    WSDL:
    codice:
    <?xml version="1.0" encoding="utf8" ?>
    <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    	xmlns:s="http://www.w3.org/2001/XMLSchema"
    	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    	xmlns:i0="http://tempuri.org/DsFlightSearch.xsd"
    	xmlns:tns="http://tempuri.org/"
    	xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
    	xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    	targetNamespace="http://tempuri.org/"
    	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    	<wsdl:import namespace="http://tempuri.org/DsFlightSearch.xsd"
    		location="http://www.meridiana.it/webservices/ws_search.asmx?schema=DsFlightSearch" />
    	<wsdl:types>
    		<s:schema elementFormDefault="qualified"
    			targetNamespace="http://tempuri.org/">
    			<s:import namespace="http://tempuri.org/DsFlightSearch.xsd" />
    			<s:element name="make1">
    				<s:complexType>
    					<s:sequence>
    						<s:element minOccurs="0" maxOccurs="1"
    							name="xxx" type="s:string" />
    					</s:sequence>
    				</s:complexType>
    			</s:element>
    			<s:element name="make1Response">
    				<s:complexType>
    					<s:sequence>
    						<s:element minOccurs="0" maxOccurs="1"
    							name="make1Result" type="tns:TWsOutputData" />
    					</s:sequence>
    				</s:complexType>
    			</s:element>
    			<s:complexType name="TWsOutputData">
    				<s:sequence>
    					<s:element minOccurs="0" maxOccurs="1"
    						name="responseCode" type="tns:TWsResponseCode" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="dsOut">
    						<s:complexType>
    							<s:sequence>
    								<s:any
    									namespace="http://tempuri.org/DsFlightSearch.xsd" />
    							</s:sequence>
    						</s:complexType>
    					</s:element>
    				</s:sequence>
    			</s:complexType>
    			<s:complexType name="TWsResponseCode">
    				<s:sequence>
    					<s:element minOccurs="1" maxOccurs="1" name="code"
    						type="s:int" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="description" type="s:string" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="stackTrace" type="s:string" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="errorList" type="tns:ArrayOfTWsResponseError" />
    				</s:sequence>
    			</s:complexType>
    			<s:complexType name="ArrayOfTWsResponseError">
    				<s:sequence>
    					<s:element minOccurs="0" maxOccurs="unbounded"
    						name="TWsResponseError" nillable="true"
    						type="tns:TWsResponseError" />
    				</s:sequence>
    			</s:complexType>
    			<s:complexType name="TWsResponseError">
    				<s:sequence>
    					<s:element minOccurs="0" maxOccurs="1"
    						name="errorSource" type="s:string" />
    					<s:element minOccurs="1" maxOccurs="1"
    						name="errorCode" type="s:int" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="errorMessage" type="s:string" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="errorDescription" type="s:string" />
    				</s:sequence>
    			</s:complexType>
    			<s:element name="make">
    				<s:complexType>
    					<s:sequence>
    						<s:element minOccurs="0" maxOccurs="1"
    							name="inData" type="tns:TWsInputData" />
    					</s:sequence>
    				</s:complexType>
    			</s:element>
    			<s:complexType name="TWsInputData">
    				<s:sequence>
    					<s:element minOccurs="0" maxOccurs="1"
    						name="XMLSecurityAccess" type="s:string" />
    					<s:element minOccurs="0" maxOccurs="1"
    						name="XMLInputDataDetail" type="s:string" />
    				</s:sequence>
    			</s:complexType>
    			<s:element name="makeResponse">
    				<s:complexType>
    					<s:sequence>
    						<s:element minOccurs="0" maxOccurs="1"
    							name="makeResult" type="tns:TWsOutputData" />
    					</s:sequence>
    				</s:complexType>
    			</s:element>
    			<s:element name="TWsOutputData" nillable="true"
    				type="tns:TWsOutputData" />
    		</s:schema>
    	</wsdl:types>
    	<wsdl:message name="make1SoapIn">
    		<wsdl:part name="parameters" element="tns:make1" />
    	</wsdl:message>
    	<wsdl:message name="make1SoapOut">
    		<wsdl:part name="parameters" element="tns:make1Response" />
    	</wsdl:message>
    	<wsdl:message name="makeSoapIn">
    		<wsdl:part name="parameters" element="tns:make" />
    	</wsdl:message>
    	<wsdl:message name="makeSoapOut">
    		<wsdl:part name="parameters" element="tns:makeResponse" />
    	</wsdl:message>
    	<wsdl:message name="make1HttpGetIn">
    		<wsdl:part name="xxx" type="s:string" />
    	</wsdl:message>
    	<wsdl:message name="make1HttpGetOut">
    		<wsdl:part name="Body" element="tns:TWsOutputData" />
    	</wsdl:message>
    	<wsdl:message name="make1HttpPostIn">
    		<wsdl:part name="xxx" type="s:string" />
    	</wsdl:message>
    	<wsdl:message name="make1HttpPostOut">
    		<wsdl:part name="Body" element="tns:TWsOutputData" />
    	</wsdl:message>
    	<wsdl:portType name="wsSearchSoap">
    		<wsdl:operation name="make1">
    			<wsdl:input message="tns:make1SoapIn" />
    			<wsdl:output message="tns:make1SoapOut" />
    		</wsdl:operation>
    		<wsdl:operation name="make">
    			<wsdl:input message="tns:makeSoapIn" />
    			<wsdl:output message="tns:makeSoapOut" />
    		</wsdl:operation>
    	</wsdl:portType>
    	<wsdl:portType name="wsSearchHttpGet">
    		<wsdl:operation name="make1">
    			<wsdl:input message="tns:make1HttpGetIn" />
    			<wsdl:output message="tns:make1HttpGetOut" />
    		</wsdl:operation>
    	</wsdl:portType>
    	<wsdl:portType name="wsSearchHttpPost">
    		<wsdl:operation name="make1">
    			<wsdl:input message="tns:make1HttpPostIn" />
    			<wsdl:output message="tns:make1HttpPostOut" />
    		</wsdl:operation>
    	</wsdl:portType>
    	<wsdl:binding name="wsSearchSoap" type="tns:wsSearchSoap">
    		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
    			style="document" />
    		<wsdl:operation name="make1">
    			<soap:operation soapAction="http://tempuri.org/make1"
    				style="document" />
    			<wsdl:input>
    				<soap:body use="literal" />
    			</wsdl:input>
    			<wsdl:output>
    				<soap:body use="literal" />
    			</wsdl:output>
    		</wsdl:operation>
    		<wsdl:operation name="make">
    			<soap:operation soapAction="http://tempuri.org/make"
    				style="document" />
    			<wsdl:input>
    				<soap:body use="literal" />
    			</wsdl:input>
    			<wsdl:output>
    				<soap:body use="literal" />
    			</wsdl:output>
    		</wsdl:operation>
    	</wsdl:binding>
    	<wsdl:binding name="wsSearchHttpGet" type="tns:wsSearchHttpGet">
    		<http:binding verb="GET" />
    		<wsdl:operation name="make1">
    			<http:operation location="/make1" />
    			<wsdl:input>
    				<http:urlEncoded />
    			</wsdl:input>
    			<wsdl:output>
    				<mime:mimeXml part="Body" />
    			</wsdl:output>
    		</wsdl:operation>
    	</wsdl:binding>
    	<wsdl:binding name="wsSearchHttpPost" type="tns:wsSearchHttpPost">
    		<http:binding verb="POST" />
    		<wsdl:operation name="make1">
    			<http:operation location="/make1" />
    			<wsdl:input>
    				<mime:content type="application/xwwwformurlencoded" />
    			</wsdl:input>
    			<wsdl:output>
    				<mime:mimeXml part="Body" />
    			</wsdl:output>
    		</wsdl:operation>
    	</wsdl:binding>
    	<wsdl:service name="wsSearch">
    		<wsdl:port name="wsSearchSoap" binding="tns:wsSearchSoap">
    			<soap:address
    				location="http://www.meridiana.it/webservices/ws_search.asmx" />
    		</wsdl:port>
    		<wsdl:port name="wsSearchHttpGet"
    			binding="tns:wsSearchHttpGet">
    			<http:address
    				location="http://www.meridiana.it/webservices/ws_search.asmx" />
    		</wsdl:port>
    		<wsdl:port name="wsSearchHttpPost"
    			binding="tns:wsSearchHttpPost">
    			<http:address
    				location="http://www.meridiana.it/webservices/ws_search.asmx" />
    		</wsdl:port>
    	</wsdl:service>
    </wsdl:definitions>

  2. #2
    Ciao,
    sto provando ad utilizzare lo stesso web server, ma con cold fusion.
    Sei riuscito a risolvere il problema.
    Michele

  3. #3
    Non me ne vogliate ma io con C# non ho problemi ... Ho provato per scrupolo.

    Dimenticavo che chiamando il metodo Make1 mi richiede 1 parametro in entrata, chiamando il metodo make mi dice che è consultabile solamente dalla macchina locale, sarà questo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    3
    Alla fine ho risolto... ma abbandonando l'utilizzo di Axis! Purtroppo tutti quei diffgram nel WSDL mi davano un sacco di problemi... così ho optato per il WSDL2Java!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.