Estás viendo la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
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
faultstring
de la respuesta de error. Por ejemplo, en el siguiente valorfaultstring
, el nombre de la política esConvert-XMLToJSON
y 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 llamadaresponse
en 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
response
se 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
faultstring
de 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://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml"
En el que your_host_alias es un dominio público que se usa para acceder a tus API, como se configura en la propiedad
virtualhosts.hostAliases
en tu archivo de anulaciones. Consulta la página Especifica anulaciones de configuración.Debido a que la carga útil de la solicitud XML está vacía, recibirás el siguiente código de error:
steps.xml2json.ExecutionFailed
Este 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://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
En el que your_host_alias es un dominio público que se usa para acceder a tus API, como se configura en la propiedad
virtualhosts.hostAliases
en tu archivo de anulaciones. Consulta la página Especifica anulaciones de configuración.
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
faultstring
de 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://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
En el que your_host_alias es un dominio público que se usa para acceder a tus API, como se configura en la propiedad
virtualhosts.hostAliases
en tu archivo de anulaciones. Consulta la página Especifica anulaciones de configuración.La 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.ExecutionFailed
Este 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
faultstring
de 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 variableTrackingNumber
es de tipo string.Ahora, recuerda que la variable
TrackingNumber
se usa en el elemento<Source>
de la política de XML a JSON:<Source>TrackingNumber</Source>
Dado que
TrackingNumber
es 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
faultstring
de 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>
esstring
mientras 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
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 variableTrackingNumber
es de tipo string.Ahora, recuerda que la variable
TrackingNumber
se usa en el elemento<Source>
de la política de XML a JSON:<Source>TrackingNumber</Source>
Del mismo modo, recuerda que la variable
request
se usa en el elemento<OutputVariable>
de la política de XML a JSON:<OutputVariable>request</OutputVariable>
Debido a que
TrackingNumber
es de tipostring
, mientras que la variableresponse
es de tipomessage
, son tipos incompatibles, por lo que recibes el siguiente código de error:steps.xml2json.InCompatibleTypes
El 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 esmessage
nistring
, 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
BookCode
comointeger
, 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
BookCode
se 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.