Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
SourceUnavailable
Código de error
steps.xml2json.SourceUnavailable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
Causa
Este error se produce si el mensaje o la variable de string especificada en el elemento <Source> de la política de XML a JSON es la siguiente:
- fuera de alcance (no disponible en el flujo específico en el que se ejecuta la política) o
- no se pueden resolver (no está definida)
Por ejemplo, este error ocurre si se supone que la política de XML a JSON se ejecutará en el flujo de solicitud, pero el elemento <Source> se establece en la variable response, que no existe en el flujo de solicitud.
Diagnóstico
Identifica la política de XML a JSON en la que se generó el error y el nombre de la variable que no está disponible. Puedes encontrar ambos elementos en el elemento
faultstringde la respuesta de error. Por ejemplo, en el siguiente valorfaultstring, el nombre de la política esConvert-XMLToJSONy la variable esresponse:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"En el archivo XML de políticas de XML a JSON con errores, verifica que el nombre de la variable establecida en el elemento
<Source>coincida con el nombre de la variable identificado en la string con errores (paso n.º 1 anterior). Por ejemplo, la siguiente política de XML a JSON especifica una variable llamadaresponseen el elemento<Source>, que coincide con lo que hay en lafaultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>Determina si la variable que se usa en el elemento
<Source>está definida y disponible en el flujo en el que se ejecuta la política de XML a JSON.Verifica si la variable tiene una de las siguientes características:
- fuera de alcance (no disponible en el flujo específico en el que se ejecuta la política) o
- no se puede resolver (no está definido)
entonces esa es la causa del error.
Como ejemplo, supongamos que la política de XML a JSON anterior se debe ejecutar en el flujo de la solicitud. Recuerda que la variable
responsese usa en el elemento<Source>de la política de XML a JSON. La variable de respuesta solo está disponible en el flujo de respuesta.Debido a que la variable de respuesta no existe en el flujo de solicitud, recibes el siguiente código de error:
steps.xml2json.SourceUnavailable
Solución
Asegúrate de que la variable establecida en el elemento <Source> del archivo XML de políticas de XML a JSON con errores esté definida y exista en el flujo en el que se ejecuta la política.
A fin de corregir el ejemplo de la política de XML a JSON anterior, puedes modificar el elemento <Source> para usar la variable request como se encuentra en el flujo de solicitud:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
<DisplayName>Convert-XMLToJSON</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>response</OutputVariable>
<Source>request</Source>
</XMLToJSON>
ExecutionFailed
Código de error
steps.xml2json.ExecutionFailed
Cuerpo de la respuesta del error
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly around char [character_number])", "detail": { "errorcode": "steps.xml2json.ExecutionFailed" } } }
Causas posibles
Las siguientes son las posibles causas de este error:
| Causa | Descripción |
| Carga útil de entrada faltante | La carga útil de entrada (XML) está vacía. |
| Entrada no válida o con formato incorrecto | La entrada (XML) que se pasa a la política de XML a JSON no es válida o el formato es incorrecto. |
Causa: Carga útil de entrada faltante
En la política de XML a JSON si el contenido (carga útil) de la variable especificada en el elemento <Source> está vacío, se produce este error.
Por ejemplo, si el elemento <Source> de la política XML a JSON se establece como una variable request o response y se supone que contiene una carga útil XML, este error se genera si la carga útil está vacía.
Diagnóstico
Identifica la política de XML a JSON en la que se produjo el error. Puedes encontrar esta información en el elemento
faultstringde la respuesta de error. Por ejemplo, en el siguientefaultstring, el nombre de la política esConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"Examina el elemento
<Source>en el archivo XML de políticas de XML a JSON con errores y determina la variable especificada. Por ejemplo, la siguiente política de XML a JSON tiene configurado el elemento<Source>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </XMLToJSON>Comprueba si la variable especificada para el elemento
<Source>en la política de XML a JSON está vacía. Si está vacía, esa es la causa del error.En la política de XML a JSON de ejemplo anterior, la carga útil de la solicitud (es decir, el cuerpo de la solicitud) que envió el cliente estaba vacía.
Por ejemplo:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"Debido a que la carga útil de la solicitud XML está vacía, recibirás el siguiente código de error:
steps.xml2json.ExecutionFailedEste error también puede ocurrir si el elemento
<Source>está configurado como respuesta, pero el servidor de backend pasa una carga útil vacía.
Solución
Asegúrate de que la entrada que se pasa a la política de XML a JSON a través del elemento <Source> sea una carga útil de XML válida y no esté vacía.
Para corregir el problema con la política de XML a JSON, pasa una carga útil de XML válida. Por ejemplo:
Crea un archivo llamado city.xml con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>Realiza la llamada a la API con un comando cURL de la siguiente manera:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
Causa: Entrada no válida o con formato incorrecto
Si la política de XML a JSON analiza una entrada que no es válida o tiene un formato incorrecto, aparecerá este error.
Por ejemplo, si se proporciona el siguiente XML no válido como entrada a la política de XML a JSON,
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
aparecerá el siguiente error:
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Diagnóstico
Identifica la política de XML a JSON en la que se produjo el error. Puedes encontrar esta información en el elemento
faultstringde la respuesta de error. Por ejemplo, en el siguientefaultstring, el nombre de la política esConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"Examina el elemento
<Source>especificado en el archivo XML de política de XML a JSON con errores. Por ejemplo, la siguiente política de XML a JSON tiene el elemento<Source>configurado en la variablerequest:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </XMLToJSON>Valida si la entrada especificada en el elemento
<Source>en la política de XML a JSON es una carga útil de XML válida. Si la entrada no es válida o incorrecto, esa es la causa del error.En el ejemplo de política de XML a JSON anterior, el siguiente XML no válido se pasó a la política para extraer variables a través del archivo
city.xml:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>A continuación, la llamada a la API de muestra que muestra cómo se pasó la solicitud:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xmlLa carga útil XML que se pasa a la API no es válida, ya que el XML no tiene una etiqueta final para el elemento
<root>. Recibirás el siguiente código de error:steps.xml2json.ExecutionFailedEste error también se puede generar si el elemento
<Source>está configurado como respuesta, pero la carga útil de la respuesta XML del servidor de backend no es válida o tiene un formato incorrecto.
Solución
Asegúrate de que la entrada que se pasa a la política de XML a JSON mediante el elemento <Source> sea válida y no tenga formato incorrecto.
Para corregir el problema con la política de XML a JSON de ejemplo que se mencionó antes, pasa una solicitud de carga útil de XML válida de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNotAvailable
Código de error
steps.xml2json.OutputVariableIsNotAvailable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
Causa
Este error se genera si la variable especificada en el elemento <Source> de la política de XML a JSON es de tipo string y no se define el elemento <OutputVariable>. El elemento <OutputVariable> es obligatorio cuando la variable definida en el elemento <Source> es del tipo string.
Diagnóstico
Identifica la política de XML a JSON en la que se produjo el error. Puedes encontrarla en el elemento
faultstringde la respuesta de error. Por ejemplo, en el siguientefaultstring, el nombre de la política esConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."En la política de XML a JSON con errores, valida si falta la
<OutputVariable>.A continuación, se muestra un ejemplo de la política de XML a JSON que contiene un elemento
<OutputVariable>.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Format>google</Format> <Source>TrackingNumber</Source> </XMLToJSON>Determina el tipo de variable especificado en el elemento
<Source>:- Localiza el código dentro del paquete del proxy de API, en el que la variable se definió primero.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable es
string, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
Por ejemplo, observa la variable TrackingNumber en la política de XML a JSON anterior. Es de tipo string. Ahora, considera una política de mensaje asignado que se usa para establecer el valor en una variable llamada
TrackingNumber, como se muestra a continuación:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber"> <DisplayName>Assign_TrackingNumber</DisplayName> <Properties/> <AssignVariable> <Name>TrackingNumber</Name> <Value><![CDATA[<Code>560075393539898</Code>]]></Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>Ten en cuenta que el tipo de variable establecido mediante
<AssignVariable>es una string. Entonces, la variableTrackingNumberes de tipo string.Ahora, recuerda que la variable
TrackingNumberse usa en el elemento<Source>de la política de XML a JSON:<Source>TrackingNumber</Source>Dado que
TrackingNumberes de tipo string y falta el<OutputVariable>en la política, recibirás el siguiente código de error:steps.xml2json.OutputVariableIsNotAvailable
Solución
Asegúrate de que, si la variable especificada en el elemento <Source> de la política de XML a JSON es de tipo string, el elemento <OutputVariable> es obligatorio en este caso.
Para corregir la política de XML a JSON anterior, incluye el elemento <OutputVariable> como se muestra a continuación.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
<DisplayName>Convert-XMLToJSON</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>response</OutputVariable>
<Source>TrackingNumber</Source>
</XMLToJSON>
InCompatibleTypes
Código de error
steps.xml2json.InCompatibleTypes
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.InCompatibleTypes"
}
}
}
Causa
Este error se genera si el tipo de variable definida en el elemento <Source> y el elemento <OutputVariable> no son iguales. Es obligatorio que el tipo de variables incluidas dentro del elemento <Source> y el elemento <OutputVariable> coincidan.
The valid types are message and string.
Diagnóstico
Identifica la política de XML a JSON en la que se produjo el error. Puedes encontrarla en el elemento
faultstringde la respuesta de error. Por ejemplo, en el siguientefaultstring, el nombre de la política esXMLToJSON_CheckType:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."En la política de XML a JSON con errores, ten en cuenta los valores especificados en
<OutputVariable>.A continuación, se muestra una política de XML a JSON de ejemplo que no tiene el elemento
<OutputVariable><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType"> <DisplayName>XMLToJSON_CheckType</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>request</OutputVariable> <Source>TrackingNumber</Source> </XMLToJSON>Determina el tipo de variable especificada en los elementos
<Source>y<OutputVariable>:- Ubica el código en el paquete del proxy de API, en el que se definió primero cada una de estas variables.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable especificada en
<Source>esstringmientras que el tipo de<OutputVariable>es mensaje o viceversa, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
A modo de ejemplo, política de mensaje asignado que se usa para establecer un valor en una variable llamada
TrackingNumbercomo se muestra a continuación:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber"> <DisplayName>Assign_TrackingNumber</DisplayName> <Properties/> <AssignVariable> <Name>TrackingNumber</Name> <Value><![CDATA[<Code>560075393539898</Code>]]></Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>Ten en cuenta que el tipo de variable establecido mediante
<AssignVariable>es una string. Entonces, la variableTrackingNumberes de tipo string.Ahora, recuerda que la variable
TrackingNumberse usa en el elemento<Source>de la política de XML a JSON:<Source>TrackingNumber</Source>Del mismo modo, recuerda que la variable
requestse usa en el elemento<OutputVariable>de la política de XML a JSON:<OutputVariable>request</OutputVariable>Debido a que
TrackingNumberes de tipostring, mientras que la variableresponsees de tipomessage, son tipos incompatibles, por lo que recibes el siguiente código de error:steps.xml2json.InCompatibleTypesEl error anterior también se puede generar si la variable en el elemento
<Source>es de tipomessage, pero la variable en el elemento<OutputVariable>es de tipo string.
Solución
Asegúrate de que el tipo de variable que se define en el elemento <Source> y el elemento <OutputVariable> siempre sea el mismo. Es obligatorio que el tipo de variables incluidas dentro del elemento <Source> y el elemento <OutputVariable> coincidan.
Para corregir la política de XML a JSON anterior, puedes declarar otra variable TrackingNumber_output de tipo string mediante la política de mensaje asignado y usar esta variable en el elemento <OutputVariable> de la política de XML a JSON.
Se modificó la política de mensaje asignado:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
<DisplayName>Assign_TrackingNumber</DisplayName>
<Properties/>
<AssignVariable>
<Name>TrackingNumber</Name>
<Value><![CDATA[<Code>560098</Code>]]></Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>TrackingNumber_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
Se modificó la política de XML a JSON:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
<DisplayName>XMLToJSON_CheckType</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>TrackingNumber_output</OutputVariable>
<Source>TrackingNumber</Source>
</XMLToJSON>
InvalidSourceType
Código de error
steps.xml2json.InvalidSourceType
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.xml2json.InvalidSourceType"
}
}
}
Causa
Este error se genera si el tipo de variable que se usa para definir el elemento <Source> no es válido. Los tipos de variable válidos son message y string.
Diagnóstico
Identifica el tipo de fuente no válido que se usa en la política de XML a JSON. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el tipo no válido es un número entero.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."Examina todas las políticas de XML a JSON en el proxy de API específico en el que se produjo la falla. En la política de XML a JSON con errores, ten en cuenta el nombre de la variable especificada en
<Source>.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType"> <DisplayName>XMLToJSON_CheckType</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>response</OutputVariable> <Source>BookCode</Source> </XMLToJSON>Determina el tipo de variable especificado en el elemento
<Source>:- Ubica el código en el paquete del proxy de API, en el que esta variable se definió primero.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable especificada en
<Source>no esmessagenistring, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
A modo de ejemplo, considera una política de ExtractVariables que se usa para extraer el valor de una carga útil XML y establece el valor en la variable
BookCodecomointeger, como se muestra a continuación:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode"> <DisplayName>Extract_BookCode</DisplayName> <Properties/> <Source>request</Source> <XMLPayload stopPayloadProcessing="false"> <Variable name="BookCode" type="integer"> <XPath>/root/BookCode</XPath> </Variable> </XMLPayload> </ExtractVariables>Ahora, recuerda que la variable
BookCodese usa en el elemento<Source>de la política de XML a JSON:<Source>BookCode</Source>Debido a que el tipo de esta variable es
Integer, que no es un tipo<Source>válido, el proxy de API falla con el siguiente error:steps.xml2json.InvalidSourceType
Solución
Asegúrate de que el tipo de variable que se usa para especificar el elemento <Source> sea válido. Los tipos <Source> válidos son message y string.
Para evitar el error anterior con la política de XML a JSON, puedes usar la variable request, que es del tipo message, o cualquier otra string que sea una carga útil XML válida.