Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
SourceUnavailable
Code d'erreur
steps.xml2json.SourceUnavailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
Exemple de message d'erreur
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
Cause
Cette erreur se produit si la variable message ou la chaîne de chaîne spécifiée dans l'élément <Source>
de la règle XML vers JSON comprend l'un des éléments suivants :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
Par exemple, cette erreur se produit si la règle XML vers JSON est censée être exécutée dans le flux de requête, alors que l'élément <Source>
est défini sur la variable response
, qui n'existe pas dans le flux de requête.
Diagnostic
Identifiez la règle XML vers JSON où l'erreur s'est produite et le nom de la variable indisponible. Vous pouvez trouver ces deux éléments dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-XMLToJSON
et celui de la variable estresponse
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
Dans le flux XML vers JSON défaillant, vérifiez que le nom de la variable définie dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la règle XML vers JSON suivante spécifie une variable nomméeresponse
dans l'élément<Source>
, qui correspond à ce qui se trouve dansfaultstring
:<?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>
Déterminez si la variable utilisée dans l'élément
<Source>
est définie et disponible dans le flux dans lequel la règle XML vers JSON est exécutée.Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
alors il s'agit de la cause de l'erreur.
Par exemple, supposons que la règle XML vers JSON présentée ci-dessus soit censée être exécutée dans le flux de requête. À présent, rappelez-vous que la variable
response
est utilisée dans l'élément<Source>
de la règle XML vers JSON : La variable n'est disponible que dans le flux de réponse.Comme la variable de réponse n'existe pas dans le flux de requête, vous obtenez le code d'erreur suivant :
steps.xml2json.SourceUnavailable
Solution
Assurez-vous que la variable définie dans l'élément <Source>
de la règle XML vers JSON défaillante est définie et qu'elle existe dans le flux où la règle est exécutée.
Pour corriger la règle XML vers JSON présentée ci-dessus, vous pouvez modifier l'élément <Source>
pour utiliser la variable request
telle qu'elle existe dans le flux de requête :
<?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
Code d'erreur
steps.xml2json.ExecutionFailed
Corps de la réponse d'erreur
{ "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" } } }
Causes possibles
Les causes possibles de cette erreur sont les suivantes :
Cause | Description |
Charge utile d'entrée manquante | La charge utile d'entrée (XML) est vide. |
Entrée invalide ou incorrecte | L'entrée (XML) transmise à la règle XML vers JSON est incorrecte ou invalide. |
Cause : charge utile d'entrée manquante
Dans cette règle XML vers JSON, si le contenu (charge utile) de la variable spécifiée dans l'élément <Source>
est vide, cette erreur se produit.
Par exemple, si l'élément <Source>
de la règle XML vers JSON est défini en tant que variable request
ou response
et qu'il est censé contenir une charge utile XML, cette erreur se produit si la charge utile est vide.
Diagnostic
Identifiez la règle XML vers JSON où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"
Examinez l'élément
<Source>
dans le fichier XML de la règle XML vers JSON et déterminez la variable spécifiée. Par exemple, la règle XML vers JSON suivante contient l'élément<Source>
défini sur "requête" :<?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>
Vérifiez si la variable spécifiée pour l'élément
<Source>
dans la règle XML vers JSON est vide. Si c'est le cas, il s'agit de la cause de l'erreur.Dans l'exemple de règle XML vers JSON présenté ci-dessus, la charge utile de la requête (le corps de la requête) envoyée par le client était vide.
Exemple :
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
La charge utile de la requête XML étant vide, vous obtenez le code d'erreur suivant :
steps.xml2json.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
est défini sur "réponse", alors que le serveur backend transmet une charge utile vide.
Solution
Vérifiez que l'entrée transmise à la règle XML vers JSON via l'élément <Source>
correspond à une charge utile XML valide et non vide.
Pour résoudre le problème lié à l'exemple de règle XML vers JSON, transmettez une charge utile XML valide. Exemple :
Créez un fichier nommé city.xml avec le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effectuez l'appel d'API à l'aide d'une commande cURL comme suit :
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
Cause : entrée invalide ou incorrecte
Si la règle XML vers JSON analyse l'entrée invalide ou incorrecte, vous obtenez cette erreur.
Par exemple, si le fichier XML invalide suivant est fourni en entrée de la règle XML vers JSON,
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
vous obtenez l'erreur suivante :
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Diagnostic
Identifiez la règle XML vers JSON où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Examinez l'élément
<Source>
spécifié dans le fichier XML de la règle XML vers JSON défaillante. Par exemple, l'élément<Source>
de la règle XML vers JSON suivante est défini sur 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>
Vérifiez si l'entrée spécifiée dans l'élément
<Source>
de la règle XML vers JSON est une charge utile XML valide. Si l'entrée est invalide ou incorrecte, il s'agit de la cause de l'erreur.Dans l'exemple de règle XML vers JSON présenté ci-dessus, le ficher XML invalide suivant a été transmis à la règle Extract Variables via le fichier
city.xml
:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
Voici un exemple d'appel d'API qui illustre comment la requête a été transmise :
curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
La charge utile XML transmise à l'API est invalide, car le XML n'a pas de balise de fin pour l'élément
<root>
. Vous recevez donc le code d'erreur suivant :steps.xml2json.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
a été défini sur la réponse, mais que la charge utile de la réponse XML du serveur backend est invalide ou incorrecte.
Solution
Assurez-vous que l'entrée transmise à la règle XML vers JSON via l'élément <Source>
est valide et correcte.
Pour résoudre le problème de l'exemple de règle XML vers JSON décrit ci-dessus, transmettez une requête de charge utile XML valide comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNotAvailable
Code d'erreur
steps.xml2json.OutputVariableIsNotAvailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
Exemple de message d'erreur
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
Cause
Cette erreur se produit si la variable spécifiée dans l'élément <Source>
de la règle XML vers JSON est de type chaîne et que l'élément <OutputVariable>
n'est pas défini. L'élément <OutputVariable>
est obligatoire lorsque la variable définie dans l'élément <Source>
est de type string
.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
Dans le message d'échec de la règle XML vers JSON, validez si
<OutputVariable>
est manquant.Voici un exemple de règle XML vers JSON qui ne contient pas l'élément
<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>
Déterminez le type de variable spécifié dans l'élément
<Source>
:- Recherchez le code dans le groupe de proxys d'API, où la variable a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si la variable est de type
string
, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
Par exemple, examinez la variable "TrackingNumber" de la règle XML vers JSON ci-dessus. Celle-ci est de type "chaîne". Prenons l'exemple d'une règle Assign Messages permettant de définir la valeur d'une variable appelée
TrackingNumber
:<?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>
Notez que le type de variable défini via
<AssignVariable>
est "chaîne". Ainsi, la variableTrackingNumber
est de type "chaîne".À présent, rappelez-vous que la variable
TrackingNumber
est utilisée dans l'élément<Source>
de la règle XML vers JSON :<Source>TrackingNumber</Source>
Étant donné que
TrackingNumber
est de type "chaîne" et que la valeur<OutputVariable>
est manquante dans la règle, vous recevez le code d'erreur suivant :steps.xml2json.OutputVariableIsNotAvailable
Solution
Si la variable spécifiée dans l'élément <Source>
de la règle XML vers JSON est de type "chaîne", assurez-vous que l'élément <OutputVariable>
est obligatoire dans ce cas.
Pour corriger la règle XML vers JSON décrite ci-dessus, incluez l'élément <OutputVariable>
comme indiqué ci-dessous.
<?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
Code d'erreur
steps.xml2json.InCompatibleTypes
Corps de la réponse d'erreur
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
Exemple de message d'erreur
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.InCompatibleTypes"
}
}
}
Cause
Cette erreur se produit si le type de la variable définie dans l'élément <Source>
et dans l'élément <OutputVariable>
n'est pas le même. Il est obligatoire que les types des variables contenues dans l'élément <Source>
et dans l'élément <OutputVariable>
correspondent.
The valid types are message and string.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estXMLToJSON_CheckType
:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
Dans la règle XML vers JSON défaillante, notez les valeurs spécifiées dans
<OutputVariable>
.Voici un exemple de règle XML vers JSON comportant un élément
<OutputVariable>
manquant<?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>
Déterminez le type de variable spécifié dans les éléments
<Source>
et<OutputVariable>
:- Recherchez le code dans le groupe de proxys d'API, où chacune de ces variables a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si le type de la variable spécifiée dans
<Source>
eststring
, alors que le type de<OutputVariable>
est "message" ou inversement, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
Prenons l'exemple d'une règle Assign Message utilisée pour définir la valeur d'une variable appelée
TrackingNumber
, comme indiqué ci-dessous :<?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>
Notez que le type de variable défini via
<AssignVariable>
est "chaîne". Ainsi, la variableTrackingNumber
est de type "chaîne".À présent, rappelez-vous que la variable
TrackingNumber
est utilisée dans l'élément<Source>
de la règle XML vers JSON :<Source>TrackingNumber</Source>
De même, rappelez-vous que la variable
request
est utilisée dans l'élément<OutputVariable>
de la règle XML vers JSON :<OutputVariable>request</OutputVariable>
Étant donné que
TrackingNumber
est de typestring
alors que la variableresponse
est de typemessage
, ces types sont incompatibles. Vous obtenez donc le code d'erreur suivant :steps.xml2json.InCompatibleTypes
L'erreur ci-dessus peut également se produire si la variable de l'élément
<Source>
est de typemessage
, alors que la variable de l'élément<OutputVariable>
est de type chaîne.
Solution
Assurez-vous que le type de la variable définie dans l'élément <Source>
et dans l'élément <OutputVariable>
est le même. Il est obligatoire que les types des variables contenues dans l'élément <Source>
et dans l'élément <OutputVariable>
correspondent.
Pour corriger la règle XML vers JSON mentionnée ci-dessus, vous pouvez déclarer une autre variable TrackingNumber_output
de type string
à l'aide de la règle Assign Message et utiliser cette variable dans l'élément <OutputVariable>
de la règle XML vers JSON.
Modification de la règle Assign Message :
<?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>
Règle XML vers JSON modifiée :
<?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
Code d'erreur
steps.xml2json.InvalidSourceType
Corps de la réponse d'erreur
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
Exemple de message d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si le type de la variable utilisé pour définir l'élément <Source>
est invalide. Les types de variables valides sont message
et string
.
Diagnostic
Identifiez le type de source invalide utilisé dans la règle XML vers JSON. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, le type invalide est "entier".
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Examinez toutes les règles XML vers JSON dans le proxy d'API spécifique où l'échec s'est produit. Dans la règle XML vers JSON défaillante, notez le nom de la variable spécifiée dans
<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>
Déterminez le type de variable spécifié dans l'élément
<Source>
:- Recherchez le code dans le groupe de proxys de l'API où cette variable a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si le type de la variable spécifiée dans
<Source>
n'est nimessage
, nistring
, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
À titre d'exemple, considérons une règle ExtractVariables utilisée pour extraire la valeur d'une charge utile XML et qui attribue à la variable
BookCode
la valeurinteger
, comme indiqué ci-dessous :<?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>
À présent, rappelez-vous que la variable
BookCode
est utilisée dans l'élément<Source>
de la règle XML vers JSON :<Source>BookCode</Source>
Comme le type de cette variable est
Integer
, qui n'est pas un type<Source>
valide, le proxy d'API échoue et renvoie l'erreur :steps.xml2json.InvalidSourceType
Solution
Assurez-vous que le type de la variable utilisée pour spécifier l'élément <Source>
est valide. Les types valides <Source>
sont message
et string
.
Pour éviter l'erreur ci-dessus avec une règle XML vers JSON, utilisez la variable request
de type message
ou toute autre chaîne correspondant à une charge utile XML valide.