Estás consultando 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 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 la variable message o de cadena especificada en el elemento <Source>
de la política XML a JSON es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política) o
- no se puede resolver (no está definido)
Por ejemplo, este error se produce si la política de XML a JSON se debe ejecutar en el flujo de solicitudes, pero el elemento <Source>
se asigna a la variable response
, que no existe en el flujo de solicitudes.
Diagnóstico
Identifica la política de XML a JSON en la que se ha producido 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 siguientefaultstring
, el nombre de la política esConvert-XMLToJSON
y la variable esresponse
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
En el XML de la política que no se ha podido convertir a JSON, comprueba que el nombre de la variable definida en el elemento
<Source>
coincida con el nombre de la variable identificada en la cadena de error (paso 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 enfaultstring
:<?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 utilizada en el elemento
<Source>
está definida y disponible en el flujo en el que se ejecuta la política de XML a JSON.Si la variable es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política) o
- no se puede resolver (no está definido)
entonces, esa es la causa del error.
Por ejemplo, supongamos que la política de XML a JSON que se muestra arriba se debe ejecutar en el flujo request. 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.Como la variable de respuesta no existe en el flujo de solicitud, recibes el código de error:
steps.xml2json.SourceUnavailable
Resolución
Asegúrate de que la variable definida en el elemento <Source>
de la política XML a JSON fallida se haya definido y exista en el flujo en el que se ejecuta la política.
Para corregir la política de ejemplo de XML a JSON que se muestra arriba, puedes modificar el elemento <Source>
para usar la variable request
tal como existe en el flujo de solicitudes:
<?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 respuesta de 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" } } }
Posibles motivos
Estas son las posibles causas de este error:
Causa | Descripción |
Falta la carga útil de entrada | La carga útil de entrada (XML) está vacía. |
Entrada no válida o con formato incorrecto | La entrada (XML) que se ha enviado a la política XML a JSON no es válida o tiene un formato incorrecto. |
Causa: falta la carga útil de entrada
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 de XML a JSON se define como una variable request
o response
y debe contener una carga útil XML, se produce este error si la carga útil está vacía.
Diagnóstico
Identifica la política de XML a JSON en la que se ha producido el error. Puede 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>
del XML de la política de XML a JSON que falla y determina la variable especificada. Por ejemplo, en la siguiente política de XML a JSON, el elemento<Source>
se ha definido como 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/> <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 XMLToJSON está vacía. Si está vacío, ese es el motivo del error.En el ejemplo de política de XML a JSON que se muestra arriba, 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"
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.Como la carga útil de la solicitud XML está vacía, recibe el siguiente código de error:
steps.xml2json.ExecutionFailed
Este error también puede producirse si el elemento
<Source>
se define como respuesta, pero el servidor backend envía una carga útil vacía.
Resolución
Asegúrate de que la entrada que se ha transferido a la política de XML a JSON a través del elemento <Source>
sea una carga útil XML válida y no esté vacía.
Para solucionar el problema con la política de XML a JSON de muestra, envíe 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>
Haz 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
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.
Causa: entrada no válida o con formato incorrecto
Si la política de XML a JSON analiza una entrada no válida o con errores de formato, se produce este error.
Por ejemplo, si se proporciona el siguiente XML no válido como entrada a la política 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 ha producido el error. Puede 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)"
Examine el elemento
<Source>
especificado en el archivo XML de la política de XML a JSON que ha fallado. Por ejemplo, la siguiente política de XML a JSON tiene el elemento<Source>
asignado a 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>
de la política XML a JSON es una carga útil XML válida. Si la entrada no es válida o tiene un formato incorrecto, ese será el motivo del error.En el ejemplo de política de XML a JSON que se muestra arriba, se ha enviado el siguiente XML no válido a la política 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, se muestra una llamada de API de ejemplo que muestra cómo se ha enviado la solicitud:
curl -v "http://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad
virtualhosts.hostAliases
de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.La carga útil XML enviada a la API no es válida porque el XML no tiene una etiqueta de cierre para el elemento
<root>
. Por lo tanto, recibes el código de error:steps.xml2json.ExecutionFailed
Este error también puede producirse si el elemento
<Source>
se ha definido como response, pero la carga útil de la respuesta XML del servidor backend no es válida o tiene un formato incorrecto.
Resolución
Asegúrese de que la entrada que se ha enviado a la política de XML a JSON a través del elemento <Source>
sea válida y no tenga un formato incorrecto.
Para solucionar el problema con la política de ejemplo de XML a JSON que se ha descrito anteriormente, envía una solicitud de carga útil 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 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 produce si la variable especificada en el elemento <Source>
de la política XML a JSON es de tipo cadena y el elemento <OutputVariable>
no está definido. El elemento <OutputVariable>
es obligatorio cuando la variable definida en el elemento <Source>
es de tipo string
.
Diagnóstico
Identifica la política de XML a JSON en la que se ha producido el error. Puedes encontrarlo 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 validación de la política de XML a JSON fallida, comprueba si falta el
<OutputVariable>
.A continuación, se muestra un ejemplo de una política de XML a JSON en la que falta el 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>
:- Busca el código en el paquete del proxy de API donde se definió la variable por primera vez.
- Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
- Compruebe el valor del atributo type (si está presente).
- Si no se incluye el atributo type, se considera que la variable es una cadena.
- Si el tipo de la variable es
string
, esa es la causa del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.
Por ejemplo, consulta la variable TrackingNumber en la política de XML a JSON anterior. Es de tipo cadena. Ahora, considere una política de asignación de mensajes que se usa para asignar un valor a 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 definido mediante
<AssignVariable>
es una cadena. Por lo tanto, la variableTrackingNumber
es de tipo cadena.Ahora, recuerda que la variable
TrackingNumber
se usa en el elemento<Source>
de la política XML a JSON:<Source>TrackingNumber</Source>
Como
TrackingNumber
es de tipo cadena y falta<OutputVariable>
en la política, recibes el código de error:steps.xml2json.OutputVariableIsNotAvailable
Resolución
Compruebe que, si la variable especificada en el elemento <Source>
de la política XMLToJSON es de tipo cadena, el elemento <OutputVariable>
sea obligatorio en este caso.
Para corregir la política de XML a JSON que se ha descrito anteriormente, incluya 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 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 produce si el tipo de la variable definida en el elemento <Source>
y el elemento <OutputVariable>
no son el mismo. Es obligatorio que el tipo de las variables contenidas en el elemento <Source>
y en el elemento <OutputVariable>
coincida.
The valid types are message and string.
Diagnóstico
Identifica la política de XML a JSON en la que se ha producido el error. Puedes encontrarlo 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 nota de la política de conversión de XML a JSON fallida, anota los valores especificados en
<OutputVariable>
.A continuación se muestra un ejemplo de política XMLToJSON 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 especificado en los elementos
<Source>
y<OutputVariable>
:- Busca el código en el paquete del proxy de API, donde se definió cada una de estas variables por primera vez.
- Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
- Compruebe el valor del atributo type (si está presente).
- Si no se incluye el atributo type, se considera que la variable es una cadena.
- Si el tipo de la variable especificada en
<Source>
esstring
y el tipo de<OutputVariable>
es message (mensaje) o viceversa, ese es el motivo del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.
Por ejemplo, considere una política de asignación de mensajes que se usa para asignar un valor a 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 definido mediante
<AssignVariable>
es una cadena. Por lo tanto, la variableTrackingNumber
es de tipo cadena.Recuerde que la variable
TrackingNumber
se usa en el elemento<Source>
de la política XMLToJSON:<Source>TrackingNumber</Source>
Del mismo modo, recuerda que la variable
request
se usa en el elemento<OutputVariable>
de la política XML a JSON:<OutputVariable>request</OutputVariable>
Como
TrackingNumber
es de tipostring
y la variableresponse
es de tipomessage
, son tipos incompatibles, por lo que recibes el código de error:steps.xml2json.InCompatibleTypes
El error anterior también puede producirse si la variable del elemento
<Source>
es de tipomessage
, pero la variable del elemento<OutputVariable>
es de tipo cadena.
Resolución
Asegúrate de que el tipo de variable definido en el elemento <Source>
y en el elemento <OutputVariable>
sea siempre el mismo. Es obligatorio que el tipo de las variables contenidas en el elemento <Source>
y en el elemento <OutputVariable>
coincida.
Para corregir la política XML a JSON descrita anteriormente, puedes declarar otra variable TrackingNumber_output
de tipo string
mediante la política Asignar mensaje y usar esta variable en el elemento <OutputVariable>
de la política XML a JSON.
Política de asignación de mensajes modificada:
<?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>
Política XMLToJSON modificada:
<?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 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 produce si el tipo de la variable usada 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 origen no válido que se ha usado 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 integer.
"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 del proxy de API específico en el que se ha producido el error. En la nota de la política de conversión de XML a JSON fallida, anota 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>
:- Busca el código en el paquete del proxy de API, donde se definió esta variable por primera vez.
- Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
- Compruebe el valor del atributo type (si está presente).
- Si no se incluye el atributo type, se considera que la variable es una cadena.
- Si el tipo de la variable especificada en
<Source>
no es nimessage
nistring
, esa es la causa del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.
Por ejemplo, supongamos que se usa una política ExtractVariables para extraer el valor de una carga útil XML y se asigna el valor a la variable
BookCode
para que sea de tipointeger
, tal 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 XML a JSON:<Source>BookCode</Source>
Como el tipo de esta variable es
Integer
, que no es un tipo<Source>
válido, el proxy de API falla y muestra el siguiente error:steps.xml2json.InvalidSourceType
Resolución
Asegúrate de que el tipo de variable que se usa para especificar el elemento <Source>
sea válido. Los tipos de <Source>
válidos son message
y string
.
Para evitar el error anterior con la política XML a JSON, puedes usar la variable request
, que es de tipo message
, o cualquier otra cadena que sea una carga útil XML válida.