Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
SourceUnavailable
Codice di errore
steps.json2xml.SourceUnavailable
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Causa
Questo errore si verifica se la variabile message specificata nell'elemento <Source>
del criterio da JSON a XML è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguita la norma) oppure
- Non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio da JSON a XML deve essere eseguito nel flusso di richiesta, ma l'elemento <Source>
è impostato sulla variabile response
, che non esiste nel flusso di richiesta.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nell'faultstring
seguente, il nome del criterio èConvert-JSONToXML
e la variabile èresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
Nel file XML del criterio da JSON a XML, non riuscito, verifica che il nome della variabile impostata nell'elemento
<Source>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio da JSON a XML specifica una variabile denominataresponse
nell'elemento<Source>
, che corrisponde al contenuto infaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML>
Determina se la variabile utilizzata nell'elemento
<Source>
è definita e disponibile nel flusso in cui viene eseguito il criterio da JSON a XML.Se la variabile è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguita la norma) oppure
- Non può essere risolto (non è definito)
questa è la causa dell'errore.
Ad esempio, supponiamo che il criterio da JSON a XML mostrato sopra debba essere eseguito nel flusso della richiesta. Ricorda che la variabile
response
viene utilizzata nell'elemento<Source>
del criterio da JSON a XML. La variabile di risposta è disponibile solo nel flusso di risposta.Poiché la variabile
response
non esiste nel flusso di richiesta, riceverai il codice di errore:steps.json2xml.SourceUnavailable
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source>
del criterio da JSON a XML non riuscito sia definita e esistente nel flusso in cui viene eseguito il criterio.
Per correggere il criterio da JSON di esempio a XML mostrato sopra, puoi modificare l'elemento <Source>
in modo da utilizzare la variabile request
, perché esiste nel flusso di richiesta:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML">
<DisplayName>Convert-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>request</Source>
</JSONToXML>
ExecutionFailed
Codice di errore
steps.json2xml.ExecutionFailed
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Cause possibili
Le possibili cause di questo errore sono:
Causa | Description |
Payload di input mancante | Il payload di input (JSON) è vuoto. |
Input non valido o non corretto | Il formato dell'input (JSON) trasmesso al criterio da JSON a XML non è valido o è in un formato non corretto. |
Causa: payload di input mancante
Nel criterio da JSON a XML, se i contenuti (payload) della variabile specificata nell'elemento <Source>
sono vuoti, si verifica questo errore.
Ad esempio, se l'elemento <Source>
nel criterio da JSON a XML è impostato come una variabile request
o response
e questi dovrebbero contenere un payload JSON, ma se quest'ultimo è vuoto, si verifica l'errore.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Esamina l'elemento
<Source>
nel file XML del criterio JSON-XML che non ha superato il test e determina la variabile specificata. Ad esempio, il seguente criterio da JSON a XML ha l'elemento<Source>
impostato surequest
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
Controlla se la variabile specificata per l'elemento
<Source>
nel criterio è vuota. Se è vuoto, è questo il motivo dell'errore.Nel criterio da JSON a XML di esempio mostrato sopra, il payload della richiesta (ovvero il corpo della richiesta) inviato dal client è vuoto.
Ad esempio:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
nel file di override. Consulta Specificare gli override della configurazione.Poiché il payload della risposta JSON è vuoto, riceverai il codice di errore:
steps.json2xml.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è impostato su risposta, ma il server di backend trasmette un payload vuoto.
Risoluzione
Assicurati che l'input passato al criterio da JSON a XML nell'elemento <Source>
sia un payload JSON valido e non vuoto.
Per risolvere il problema con il criterio da JSON a XML di esempio, trasmetti un payload JSON valido. Ad esempio:
Crea un file denominato
city.json
con il seguente contenuto:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Effettua la chiamata API utilizzando un comando curl come segue:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
nel file di override. Consulta Specificare gli override della configurazione.
Causa: input non valido o in un formato non corretto
Se il criterio da JSON a XML analizza gli input non validi o in un formato non corretto, viene visualizzato questo errore.
Ad esempio, se viene fornito il seguente JSON non valido come input per il criterio da JSON a XML,
[
"args": ["name" : "Google" ]
]
ricevi l'errore:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Esamina l'elemento
<Source>
specificato nel file XML del criterio JSON non riuscito. Ad esempio, il seguente criterio da JSON a XML ha l'elemento<Source>
impostato sulla variabilerequest
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
Verifica che l'input specificato nell'elemento
<Source>
sia un payload JSON valido. Se l'input non è valido o in un formato non corretto, è questa la causa dell'errore.Supponiamo che il seguente JSON non valido sia stato trasmesso al criterio
[ "args": ["name" : "Google" ] ]
Ecco la chiamata API di esempio che mostra come è stata trasmessa la richiesta:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
nel file di override. Consulta Specificare gli override della configurazione.Il payload JSON passato nella richiesta non è valido perché l'oggetto JSON inizia e termina con parentesi quadre ([ ]). Per questo motivo, viene visualizzato il codice di errore:
steps.json2xml.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato come risposta, ma il payload della risposta JSON non è valido o è in un formato non corretto.
Risoluzione
Assicurati che l'input passato al criterio JSON al criterio XML nell'elemento <Source>
sia valido e che non sia nel formato corretto.
Per risolvere il problema relativo al criterio di esempio da JSON a XML di cui sopra, trasmetti una richiesta di payload JSON valida come segue:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Codice di errore
steps.json2xml.OutputVariableIsNotAvailable
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Causa
Questo errore si verifica se la variabile specificata nell'elemento <Source>
del criterio da JSON a XML è di tipo stringa e l'elemento <OutputVariable>
non è definito. L'elemento <OutputVariable>
è obbligatorio quando la variabile definita nell'elemento <Source>
è di tipo stringa.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare questa opzione nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
Nel criterio da JSON a XML non riuscito, verifica se manca
<OutputVariable>
.Nel seguente criterio JSONToXML di esempio manca un elemento
<OutputVariable>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML"> <DisplayName>Check-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <Source>PostalCode</Source> </JSONToXML>
Determina il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice all'interno del proxy API in cui la variabile è stata definita per prima.
- Una volta individuato il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
- Controlla il valore dell'attributo tipo (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo di variabile è stringa, l'errore è dovuto a questo. Per conoscere le variabili comuni e i relativi tipi, consulta Riferimento variabili.
Ad esempio, controlla la variabile
PostalCode
nel criterio da JSON a XML riportato sopra.Ad esempio, supponiamo che venga utilizzato un criterio di assegnazione dei messaggi per assegnare un valore a una variabile denominata
PostalCode
, come mostrato di seguito:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Tieni presente che il tipo di variabile impostato in
<AssignVariable>
è stringa. Di conseguenza, la variabilePostalCode
è di tipo stringa.Ora ricorda che la variabile
PostalCode
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>PostalCode</Source>
Poiché
PostalCode
è di tipo stringa e manca l'elemento<OutputVariable>
, riceverai il codice di errore:steps.json2xml.OutputVariableIsNotAvailable
Risoluzione
Assicurati che se la variabile specificata nell'elemento <Source>
del criterio JSONToXML è di tipo stringa, l'elemento <OutputVariable>
sia definito all'interno del criterio.
Per correggere il criterio JSONToXML discusso sopra, includi un elemento <OutputVariable>
come mostrato di seguito.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
Codice di errore
steps.json2xml.InCompatibleTypes
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Causa
Questo errore si verifica se il tipo della variabile definita nell'elemento <Source>
e nell'elemento <OutputVariable>
non corrispondono. È obbligatorio che il tipo di variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrispondano.
I tipi validi sono message
e string
.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare questa opzione nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Nel criterio da JSON a XML non riuscito, prendi nota dei valori specificati in
<OutputVariable>
e<Source>
.Considera il seguente criterio di esempio:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML_checktype"> <DisplayName>JSONToXML_checktype</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>response</OutputVariable> <Source>PostalCode</Source> </JSONToXML>
Determina il tipo di variabile specificato negli elementi
<Source>
e<OutputVariable>
:- Individua il codice all'interno del proxy API in cui ognuna di queste variabili è stata definita per prima.
- Una volta individuato il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
- Controlla il valore dell'attributo tipo (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo di variabile specificato in
<Source>
è stringa, mentre il tipo di<OutputVariable>
è messaggio o viceversa, è questo il motivo dell'errore. Per conoscere le variabili comuni e i relativi tipi, consulta Riferimento variabili.
Prendi ad esempio un criterio Assegna messaggio che viene utilizzato per assegnare un valore a una variabile denominata
PostalCode
, come mostrato di seguito:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Tieni presente che il tipo di variabile impostato in
<AssignVariable>
è stringa, pertanto la variabilePostalCode
è di tipo stringa.Ora ricorda che la variabile
PostalCode
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>PostalCode</Source>
Allo stesso modo, ricorda che la variabile
response
viene utilizzata nell'elemento<OutputVariable>
del criterio JSONToXML:<OutputVariable>response</OutputVariable>
Poiché
PostalCode
è di tipo stringa, mentre la variabileresponse
è di tipo di messaggio, non sono di tipi incompatibili, pertanto riceverai il codice di errore:steps.json2xml.InCompatibleTypes
L'errore riportato sopra può verificarsi anche se la variabile nell'elemento
<Source>
è di tipomessage
, ma la variabile nell'elemento<OutputVariable>
è di tipo stringa.
Risoluzione
Assicurati che il tipo della variabile definita nell'elemento <Source>
e nell'elemento <OutputVariable>
siano sempre uguali. È obbligatorio che il tipo di variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrispondano. Vale a dire, assicurati che il tipo di <Source>
e gli elementi <OutputVariable>
siano entrambi di tipo stringa o di messaggio.
Per correggere il criterio da JSON a XML descritto sopra, potresti dichiarare un'altra variabile PostalCode_output
di tipo stringa utilizzando il criterio Assegna messaggi e utilizzare questa variabile nell'elemento <OutputVariable>
del criterio da JSON a XML.
Criterio di assegnazione dei messaggi modificato:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode">
<DisplayName>Assign_PostalCode</DisplayName>
<Properties/>
<AssignVariable>
<Name>PostalCode</Name>
<Value>{"value":"56008"}</Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>PostalCode_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
Criterio JSONToXML modificato:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>JSONToXML_checktype</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>PostalCode_output</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InvalidSourceType
Codice di errore
steps.json2xml.InvalidSourceType
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.json2xml.InvalidSourceType"
}
}
}
Causa
Questo errore si verifica se il tipo di variabile utilizzato per definire l'elemento <Source>
non è valido.I tipi di variabile validi sono message
e string
.
Diagnosi
Identifica il tipo di origine non valido utilizzato nel criterio da JSON a XML. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente, il tipo non valido è Numero intero.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Esamina tutti i criteri da JSON a XML nello specifico proxy API in cui si è verificato l'errore. Nel criterio da JSON a XML non riuscito, prendi nota del nome della variabile specificata in
<Source>
.Ecco un criterio di esempio con la variabile denominata EmployeeID specificata nell'elemento
<Source>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>EmployeeID</Source>
</JSONToXML>
Determina il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice all'interno del proxy API in cui questa variabile è stata definita per prima.
- Una volta individuato il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
- Controlla il valore dell'attributo tipo (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo della variabile specificato in
<Source>
non è né messaggio né tipo stringa, è questo il motivo dell'errore. Per conoscere le variabili comuni e i relativi tipi, consulta Riferimento variabili.
Prendiamo ad esempio il criterio ExtractVariables, che viene utilizzato per estrarre il valore da un payload JSON e imposta il valore sulla variabile
EmployeeID
di tipo intero, come mostrato di seguito:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>request</Source> <JSONPayload> <Variable name="EmployeeID" type="integer"> <JSONPath>$.ID</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
Ora ricorda che la variabile
EmployeeID
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>EmployeeID</Source>
Poiché il tipo di questa variabile è
Integer
, che non è un tipo<Source>
valido, il proxy API restituisce l'errore:steps.json2xml.InvalidSourceType
Risoluzione
Assicurati che il tipo di variabile utilizzato per specificare l'elemento <Source>
sia
valido. I tipi di <Source>
validi sono message
e string
.
Per evitare l'errore precedente con il criterio JSONToXML, puoi utilizzare la variabile di richiesta di tipo messaggio o qualsiasi altra stringa che sia un payload JSON valido.