Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con restriccion en definicion de wsdl

Estas en el tema de Problema con restriccion en definicion de wsdl en el foro de Programación General en Foros del Web. Estoy definiendo un wsdl para un servicio web de la siguiente forma Código: <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:soap="ht___schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="ht___schemas.xmlsoap.org/soap/encoding/" xmlns:mime="ht___schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="ht___url.cor/" xmlns:xsd="ht___w3.org/2001/XMLSchema" xmlns:soap12="ht___schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="ht___schemas.xmlsoap.org/wsdl/http/" targetNamespace="http___url.cor/" ...
  #1 (permalink)  
Antiguo 05/11/2009, 09:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Problema con restriccion en definicion de wsdl

Estoy definiendo un wsdl para un servicio web de la siguiente forma

Código:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions 
	xmlns:soap="ht___schemas.xmlsoap.org/wsdl/soap/"
	xmlns:soapenc="ht___schemas.xmlsoap.org/soap/encoding/" 
	xmlns:mime="ht___schemas.xmlsoap.org/wsdl/mime/"
	xmlns:tns="ht___url.cor/" 
	xmlns:xsd="ht___w3.org/2001/XMLSchema"
	xmlns:soap12="ht___schemas.xmlsoap.org/wsdl/soap12/" 
	xmlns:http="ht___schemas.xmlsoap.org/wsdl/http/"
	targetNamespace="http___url.cor/"
	xmlns:wsdl="ht___schemas.xmlsoap.org/wsdl/">
	<wsdl:documentation>Licitaciones</wsdl:documentation>
	<wsdl:types>
		<xsd:schema elementFormDefault="qualified" targetNamespace="ht___url.cor/">
		
			<xsd:element name="car" type="tns:carType"/>
			
			<xsd:simpleType name="carType">
			  <xsd:restriction base="xsd:short">
			    <xsd:enumeration value="1"/>
			    <xsd:enumeration value="2"/>
			    <xsd:enumeration value="3"/>
			  </xsd:restriction>
			</xsd:simpleType>
			
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="PruebaRequest">
		<wsdl:part name="PruebaRequest" element="tns:car"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="PruebaResponse">
		<wsdl:part name="PruebaResponse" type="xsd:string"></wsdl:part>
	</wsdl:message>		
	<wsdl:portType name="LicitacionWebServiceSoap">
		<wsdl:operation name="Prueba">
			<wsdl:documentation xmlns:wsdl="ht___schemas.xmlsoap.org/wsdl/">Prueba</wsdl:documentation>
			<wsdl:input message="tns:PruebaRequest"></wsdl:input>
			<wsdl:output message="tns:PruebaResponse"></wsdl:output>
		</wsdl:operation>		
	</wsdl:portType>
	<wsdl:binding name="LicitacionWebServiceSoap" type="tns:LicitacionWebServiceSoap">
		<soap:binding transport="ht___schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="Prueba">
			<soap:operation soapAction="ht___url.cor/Prueba"
				style="document" />
			<wsdl:input>
				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>						
	</wsdl:binding>
	<wsdl:service name="LicitacionWebService">
		<wsdl:documentation xmlns:wsdl="ht___schemas.xmlsoap.org/wsdl/">Servicio de manejo de licitaciones</wsdl:documentation>
		<wsdl:port name="LicitacionWebServiceSoap" binding="tns:LicitacionWebServiceSoap">
			<soap:address location="ht___url.cor/servidor/servidor2.php" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>
Lo que hace el método prueba escrito en php es devolverme el valor que le pasamos.

Para probarlo uso SOAP UI, creo un proyecto nuevo con mi wsdl e invoco a prueba pasandole un string asdf

Fatal error: SOAP-ERROR: Encoding: Violation of encoding rules in /var/www/vhosts/url.cor/servidor/servidor2.php on line 14

Donde la linea 14 es aquella que se corresponde con $servidor->handle();

Si paso un valor numerico digamos 1, devuelve el valor correcto.

Pero si paso 4 también, u otro valor que no estea en la enumeración por ejemplo 99999999999999999999999999999999 que tampoco debería tragar por ser mayor que un short.

¿Acaso la información de xsd:restriction es solo orientativa para el cliente que construya?

Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:17.