Solución de problemas de errores de implementación de la política de validación de mensajes SOAP

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

InvalidResourceType

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Invalid Resource Type resource_type. It should be xsd or wsdl. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

Ejemplo de mensaje de error

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py.
It should be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;
Organization:gsc-hipaa;Environment:test.

Captura de pantalla de ejemplo de error

Mensaje de error de recurso no válido.

Causa

Este error se produce si el elemento <ResourceURL> de la política SOAPMessageValidation se define en un tipo de recurso que no admite la política. Los tipos de recursos admitidos son xsd y wsdl.

Diagnóstico

  1. Identifica el nombre de la política SOAPMessageValidation y el tipo de recurso no válido que se ha usado en el elemento <ResourceURL> de la política. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política SOAPMessageValidation es SOAP-Message-Validation-1 y el tipo de recurso es py.

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py. It should
    be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-
    hipaa;Environment:test.
    
  2. Examina el archivo XML de la política SOAPMessageValidation que ha fallado. Si el tipo de recurso especificado en el elemento <ResourceURL> coincide con el tipo de recurso no válido identificado en el paso 1 anterior, esa es la causa del error.

    Por ejemplo, la siguiente política especifica el tipo de recurso como py, que coincide con lo que aparece en el mensaje de error:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
        name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>py://Script-1.py</ResourceURL>
    </MessageValidation>
    

    Como el tipo de recurso usado en <ResourceURL> no es xsd ni wsdl, la implementación fallará y se mostrará el error anterior.

Resolución

Asegúrate de que el tipo de recurso especificado en el elemento <ResourceURL> de la política SOAPMessageValidation sea xsd o wsdl, y de que el archivo de recursos tenga el formato correcto.

Para corregir la política SOAPMessageValidation de ejemplo que se muestra arriba, puede modificar el tipo de recurso a xsd o wsdl:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://sample.com"> sampleObject</Element>
    <SOAPMessage/>
    <Source>request</Source>
<ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
</MessageValidation>

ResourceCompileFailed

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Failed to compile resource resource. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

Ejemplo de mensaje de error

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Failed to compile resource SOAP-Message-Validation-1.wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;Environment:test.

Captura de pantalla de ejemplo de error

No se ha podido compilar el mensaje de error del recurso.

Causa

Este error se produce si la secuencia de comandos de recursos a la que se hace referencia en el elemento <ResourceURL> de la política SOAPMessageValidation contiene un error que impide que se compile durante la implementación.

Diagnóstico

  1. Identifica el nombre de la política SOAPMessageValidation y la secuencia de comandos de recursos utilizada en la política. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política SOAPMessageValidation es SOAP-Message-Validation-1 y la secuencia de comandos de recursos es SOAP-Message-Validation-1.wsdl.

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Failed to compile resource
    SOAP-Message-Validation-1.wsdl. Context
    Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;
    Environment:test.
    
  2. Examina el archivo XML de la política SOAPMessageValidation que ha fallado y comprueba que la secuencia de comandos de recursos especificada en el elemento <ResourceURL> coincida con lo que se indica en el mensaje de error.

    Por ejemplo, la siguiente política especifica el elemento <ResourceURL> como SOAP-Message-Validation-1.wsdl, que coincide con lo que aparece en el mensaje de error:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
    </MessageValidation>
    
  3. Consulta el archivo de secuencia de comandos de recursos identificado en el paso 1 y comprueba si hay algún problema que pueda provocar errores de compilación.

    Aquí tienes un ejemplo de archivo de secuencia de comandos de recursos:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsd/">
        <wsdl:types>
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:element name="request" type="xs:string"/>
            </xs:schema>
        </wsdl:types>
    </wsdl:definitions>
    

    Como xmlns:wsdl apunta a una URL no válida, la implementación fallará y se mostrará el error anterior.

Resolución

Asegúrate de que el script de recursos especificado en el elemento <ResourceURL> de la política SOAPMessageValidation no tenga ningún problema que le impida compilarse.

Para corregir la secuencia de comandos SOAP-Message-Validation-1.wsdl que se muestra arriba, puede modificar xmlns:wsdl para que apunte a una URL válida:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:element name="request" type="xs:string"/>
        </xs:schema>
    </wsdl:types>
</wsdl:definitions>

RootElementNameUnspecified

Mensaje de error

Al guardar el proxy de API a través de la interfaz de usuario o la API de Apigee, se produce un error y se muestra este mensaje:

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy:
RootElement name is not specified.

Ejemplo de mensaje de error

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.

Captura de pantalla de ejemplo de error

Mensaje de error que indica que no se ha especificado el nombre de RootElement.

Causa

Este error se produce si el elemento <Element> de la política SOAPMessageValidation no contiene el nombre del elemento raíz.

Diagnóstico

  1. Identifica el nombre de la política SOAPMessageValidation en la que se ha producido el error. Por ejemplo, en el siguiente error, el nombre de la política SOAPMessageValidation es SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Examina el archivo XML de la política SOAPMessageValidation que ha fallado. Si el nombre del elemento raíz usado para la validación no se especifica en el elemento <Element>, ese es el motivo del error.

    Por ejemplo, la siguiente política no especifica el nombre del elemento raíz:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://schemas.xmlsoap.org/soap/prices"/>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

    Como no se ha especificado el nombre del elemento raíz, la implementación fallará y se mostrará el error anterior.

Resolución

Asegúrate de que el elemento <Element> de la política SOAPMessageValidation contenga el elemento raíz correcto.

Para corregir la política SOAPMessageValidation que se muestra arriba, puedes modificar el elemento <Element> y añadir un elemento raíz válido, como se indica a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

InvalidRootElementName

Mensaje de error

Al guardar el proxy de API a través de la interfaz de usuario o la API de Apigee, se produce un error y se muestra este mensaje:

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy: RootElement name root_element_name is invalid.

Ejemplo de mensaje de error

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
is invalid.

Captura de pantalla de ejemplo de error

Mensaje de error que indica que el nombre RootElement 1GetPriceResponse no es válido.

Causa

Este error se produce si el elemento <Element> de la política SOAPMessageValidation contiene un nombre de elemento raíz que no cumple las reglas de XML para los nombres de elementos válidos.

Diagnóstico

  1. Identifica el nombre de la política SOAPMessageValidation en la que se ha producido el error. Por ejemplo, en el siguiente error, el nombre de la política SOAPMessageValidation es SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Examina el archivo XML de la política SOAPMessageValidation que ha fallado. Si el nombre del elemento raíz especificado en el elemento <Element> no cumple los criterios de un nombre de elemento XML válido, esa es la causa del error.

    Por ejemplo, la siguiente política tiene un nombre de elemento raíz que empieza por un número, lo cual no es válido. Un nombre de elemento que contenga espacios tampoco sería válido.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
         <Element namespace="http://schemas.xmlsoap.org/soap/prices">1GetPriceResponse</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

Resolución

Asegúrese de que el elemento <Element> de la política SOAPMessageValidation contiene un nombre de elemento raíz válido.

Para corregir la política SOAPMessageValidation que se muestra arriba, puede modificar el elemento <Element> para que contenga un nombre de elemento raíz válido, como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

NoElements

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Deploying Revision revision_number
Resource "resource_url" has no element definitions.

Ejemplo de mensaje de error

Error Deploying Revision 2 to test
Resource "xsd://Script-1.xsd" has no element definitions.

Captura de pantalla de ejemplo de error

Mensaje de error que indica que el recurso no tiene definiciones de elementos.

Causa

Este error se produce si el archivo de recursos especificado en el elemento <Resource> de la política SOAPMessageValidation no contiene ningún elemento que se pueda usar para la validación.

Diagnóstico

  1. Identifica las definiciones de elementos que faltan en el archivo de recursos a partir del mensaje de error. Por ejemplo, en el siguiente error, el archivo de recursos utilizado es xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Examina el archivo de recursos identificado en el paso 1. Si no hay elementos definidos, esa es la causa del error.

    Por ejemplo, el siguiente archivo de recursos Script-1.xsd no contiene ningún elemento:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    </xsd:schema>
    

    Como el archivo de recursos no tiene ningún elemento, la implementación fallará y se mostrará el error anterior.

Resolución

Asegúrate de que el archivo de recursos utilizado en la política SOAPMessageValidation contenga las definiciones de elementos pertinentes.

Para corregir el archivo de recursos de ejemplo que se muestra arriba, puede modificar el archivo xsd para añadir el siguiente contenido:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="shipOrder" type="order"/>
<xsd:complexType name="order">
<xsd:sequence>
<xsd:element name="shipTo" type="shipAddress"/>
<xsd:element name="items" type="cdItems"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItems">
<xsd:sequence>
<xsd:element name="item" type="cdItem" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItem">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="quantity" type="xsd:integer"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>