Stai
visualizzando la documentazione di Apigee X.
Visualizza la documentazione di Apigee Edge.
Sorgente non disponibile
Codice di errore
steps.xml2json.SourceUnavailable
Corpo della risposta di errore
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
Esempio di messaggio di errore
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
Causa
Questo errore si verifica se la variabile messaggio o stringa specificata nell'elemento <Source>
del criterio da XML a JSON è:
- fuori dall'ambito (non disponibile nel flusso specifico in cui il criterio è in esecuzione) oppure
- non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se è previsto che il criterio da XML a JSON venga eseguito nel flusso di richiesta, ma l'elemento <Source>
è impostato sulla variabile response
, che non esiste nel flusso di richiesta.
Diagnosi
Identificare il criterio da XML a JSON in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-XMLToJSON
e la variabile èresponse
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
Nel file XML del criterio da XML a JSON non riuscito, verifica che il nome della variabile impostato nell'elemento
<Source>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio da XML a JSON specifica una variabile denominataresponse
nell'elemento<Source>
, che corrisponde a ciò che è nell'elementofaultstring
:<?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 se la variabile utilizzata nell'elemento
<Source>
è definita e disponibile nel flusso in cui viene eseguito il criterio da XML a JSON.Se la variabile è:
- fuori dall'ambito (non disponibile nel flusso specifico in cui il criterio è in esecuzione) oppure
- non può essere risolto (non è definito)
quindi questa è la causa dell'errore.
Ad esempio, supponiamo che il criterio da XML a JSON mostrato sopra debba essere eseguito nel flusso request. Ricorda che la variabile
response
viene utilizzata nell'elemento<Source>
del criterio XML in formato JSON. La variabile di risposta è disponibile solo nel flusso di risposta.Poiché la variabile di risposta non esiste nel flusso di richiesta, ricevi il codice di errore:
steps.xml2json.SourceUnavailable
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source>
del criterio XML-JSON non riuscito sia definita e esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio XML di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo che utilizzi la variabile request
così com'è nel flusso della richiesta:
<?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>
Esecuzione non riuscita
Codice di errore
steps.xml2json.ExecutionFailed
Corpo della risposta di errore
{ "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" } } }
Cause possibili
Ecco le possibili cause di questo errore:
Causa | Descrizione |
Payload input mancante | Il payload di input (XML) è vuoto. |
Input non valido o non valido | Il testo inserito (XML) passato dal criterio XML al file JSON non è valido o non è nel formato corretto. |
Causa: payload di input mancante
Nel criterio da XML a JSON se il contenuto (loadload) della variabile specificata nell'elemento <Source>
è vuoto, si verifica questo errore.
Ad esempio, se l'elemento <Source>
nel criterio da XML a JSON è impostato come variabile request
o response
e deve contenere un payload XML, questo errore si verifica se il payload è vuoto.
Diagnosi
Identificare il criterio da XML a JSON 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-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"
Esamina l'elemento
<Source>
nel file XML del criterio JSON non riuscito e determina la variabile specificata. Ad esempio, il seguente criterio da XML a JSON ha un elemento<Source>
impostato su richiesta:<?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>
Controlla se la variabile specificata per l'elemento
<Source>
nel criterio XMLToJSON è vuota. Se è vuoto, la causa dell'errore è questa.Nel criterio XML da esempio di cui sopra, il payload della richiesta (ovvero il corpo della richiesta) inviato dal client era vuoto.
Ad esempio:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml"
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta la sezione Specificare le sostituzioni della configurazione.Poiché il payload della richiesta XML è vuoto, ricevi il codice di errore:
steps.xml2json.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 XML in formato JSON tramite l'elemento <Source>
sia un payload XML valido e non vuoto.
Per risolvere il problema relativo al criterio XML di esempio in formato JSON, trasmetti un payload XML valido. Ad esempio:
Crea un file denominato city.xml con i seguenti contenuti:
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Effettua la chiamata API utilizzando un comando cURL come segue:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta la sezione Specificare le sostituzioni della configurazione.
Causa: input non valido o non valido
Se il criterio da XML a JSON analizza un input non valido o non valido, viene visualizzato questo errore.
Ad esempio, se viene fornito il seguente XML non valido come input per il criterio da XML a JSON,
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
viene visualizzato l'errore:
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Diagnosi
Identificare il criterio da XML a JSON 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-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Esamina l'elemento
<Source>
specificato nel file XML del criterio con errori JSON. Ad esempio, il seguente criterio da XML a JSON ha l'elemento<Source>
impostato sulla variabilerequest
:<?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>
Verifica se l'input specificato nell'elemento
<Source>
nel criterio da XML a JSON è un payload XML valido. Se l'input non è valido o non è valido, allora è questa la causa dell'errore.Nel criterio XML di esempio riportato sopra, il seguente XML non valido è stato passato al criterio Estrai variabili tramite il file
city.xml
:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
Ecco un esempio di chiamata API che mostra come è stata trasmessa la richiesta:
curl -v "http://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta la sezione Specificare le sostituzioni della configurazione.Il payload XML passato all'API non è valido, perché il file XML non ha un tag finale per l'elemento
<root>
. Quindi ricevi il codice di errore:steps.xml2json.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato su risposta, ma il payload della risposta XML del server di backend non è valido o non è valido.
Risoluzione
Assicurati che l'input passato al file XML al criterio JSON tramite l'elemento <Source>
sia valido e non valido.
Per risolvere il problema relativo al criterio XML di esempio fornito in precedenza, passa una richiesta di payload XML valida come segue:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNonDisponibile
Codice di errore
steps.xml2json.OutputVariableIsNotAvailable
Corpo della risposta di errore
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
Esempio di messaggio di errore
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
Causa
Questo errore si verifica se la variabile specificata nell'elemento <Source>
del criterio da XML a JSON è di tipo stringa e l'elemento <OutputVariable>
non è definito. L'elemento <OutputVariable>
è obbligatorio quando la variabile definita nell'elemento <Source>
è di tipo string
.
Diagnosi
Identificare il criterio da XML a JSON in cui si è verificato l'errore. Puoi trovarlo nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
Nel criterio XML-JSON non riuscito, convalida se non è presente il valore
<OutputVariable>
.Ecco un esempio di criterio XML per JSON in cui manca l'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 il tipo di variabile specificato nell'elemento
<Source>
:- Trova il codice all'interno del bundle proxy dell'API, dove la variabile è stata definita per prima.
- Dopo aver individuato il criterio in cui la variabile viene definita e compilata per prima, devi determinare il tipo di tale variabile come segue:
- Controlla il valore dell'attributo "type" (se presente).
- Se l'attributo "type" non è presente, la variabile viene considerata una stringa.
- Se il tipo di variabile è
string
, la causa dell'errore è questa. Per saperne di più sulle variabili comuni e sui loro tipi, consulta il riferimento per le variabili.
Ad esempio, osserva la variabile TrackingNumber nel criterio da XML a JSON sopra riportato. È di tipo stringa. Ora puoi prendere in considerazione un criterio Assegna messaggio che viene utilizzato per impostare il valore per una variabile denominata
TrackingNumber
, come mostrato di seguito:<?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>
Tieni presente che il tipo di variabile impostato tramite
<AssignVariable>
è stringa. La variabileTrackingNumber
è di tipo stringa.Ora, ricorda che la variabile
TrackingNumber
viene utilizzata nell'elemento<Source>
del criterio XML To JSON:<Source>TrackingNumber</Source>
Poiché
TrackingNumber
è di tipo stringa e<OutputVariable>
non è presente nel criterio, riceverai il codice di errore:steps.xml2json.OutputVariableIsNotAvailable
Risoluzione
Assicurati che se la variabile specificata nell'elemento <Source>
del criterio XMLToJSON sia di tipo stringa, l'elemento <OutputVariable>
sia obbligatorio in questo caso.
Per correggere il criterio da XML a JSON discusso in precedenza, includi l'elemento <OutputVariable>
come mostrato di seguito.
<?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>
Incompatibilità
Codice di errore
steps.xml2json.InCompatibleTypes
Corpo della risposta di errore
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
Esempio di messaggio di errore
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.InCompatibleTypes"
}
}
}
Causa
Questo errore si verifica se il tipo di variabile definito nell'elemento <Source>
e nell'elemento <OutputVariable>
non sono uguali. È obbligatorio che il tipo di variabili contenute nell'elemento <Source>
corrisponda all'elemento <OutputVariable>
.
The valid types are message and string.
Diagnosi
Identificare il criterio da XML a JSON in cui si è verificato l'errore. Puoi trovarlo nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èXMLToJSON_CheckType
:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
Nel criterio XML To JSON non riuscito, prendi nota dei valori specificati nel criterio
<OutputVariable>
.Di seguito è riportato un criterio XMLToJSON di esempio in cui manca l'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 il tipo di variabile specificato negli elementi
<Source>
e<OutputVariable>
:- Individua il codice nel bundle proxy dell'API, dove ogni variabile è stata definita per prima.
- Dopo aver individuato il criterio in cui la variabile viene definita e compilata per prima, devi determinare il tipo di tale variabile come segue:
- Controlla il valore dell'attributo "type" (se presente).
- Se l'attributo "type" non è presente, la variabile viene considerata una stringa.
- Se il tipo di variabile specificato in
<Source>
èstring
, mentre il tipo di<OutputVariable>
è message o viceversa, questa è la causa dell'errore. Per saperne di più sulle variabili comuni e sui loro tipi, consulta il riferimento per le variabili.
Ad esempio, considera un criterio Assegna messaggio che viene utilizzato per impostare un valore per una variabile denominata
TrackingNumber
, come mostrato di seguito:<?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>
Tieni presente che il tipo di variabile impostato tramite
<AssignVariable>
è stringa. La variabileTrackingNumber
è di tipo stringa.Ora, ricorda che la variabile
TrackingNumber
viene utilizzata nell'elemento<Source>
del criterio XMLToJSON:<Source>TrackingNumber</Source>
Analogamente, ricorda che la variabile
request
viene utilizzata nell'elemento<OutputVariable>
del criterio XML To JSON:<OutputVariable>request</OutputVariable>
Dato che
TrackingNumber
è di tipostring
, mentre la variabileresponse
è di tipomessage
, non sono compatibili, pertanto riceverai il codice di errore:steps.xml2json.InCompatibleTypes
L'errore precedente 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 di variabile definito nell'elemento <Source>
e nell'elemento <OutputVariable>
siano sempre gli stessi. È obbligatorio che il tipo di variabili contenute nell'elemento <Source>
corrisponda all'elemento <OutputVariable>
.
Per correggere il criterio XML in formato JSON discusso in precedenza, puoi dichiarare un'altra variabile TrackingNumber_output
di tipo string
utilizzando il criterio Assegna messaggio e utilizzare questa variabile nell'elemento <OutputVariable>
del criterio XML in formato JSON.
Criterio di assegnazione di messaggi modificato:
<?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>
Criterio XMLToJSON modificato:
<?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>
TipoOrigine non valido
Codice di errore
steps.xml2json.InvalidSourceType
Corpo della risposta di errore
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
Esempio di messaggio di errore
{
"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
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
Identificare il tipo di origine non valido utilizzato nel criterio da XML a JSON. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, il seguente tipo di errore non è intero.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Esamina tutti i criteri da XML a JSON nel proxy API specifico in cui si è verificato l'errore. Nel criterio XML-JSON non riuscito, prendi nota del nome della variabile specificata in
<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 il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice nel bundle proxy dell'API, dove questa variabile è stata definita per prima.
- Dopo aver individuato il criterio in cui la variabile viene definita e compilata per prima, devi determinare il tipo di tale variabile come segue:
- Controlla il valore dell'attributo "type" (se presente).
- Se l'attributo "type" non è presente, la variabile viene considerata una stringa.
- Se il tipo di variabile specificato in
<Source>
non è némessage
néstring
, è questa la causa dell'errore. Per saperne di più sulle variabili comuni e sui loro tipi, consulta il riferimento per le variabili.
Ad esempio, considera un criterio ExtractVariables utilizzato per estrarre il valore da un payload XML e impostare il valore sulla variabile
BookCode
come tipointeger
come mostrato di seguito:<?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>
Ora, ricorda che la variabile
BookCode
viene utilizzata nell'elemento<Source>
del criterio XML To JSON:<Source>BookCode</Source>
Poiché il tipo di questa variabile è
Integer
, che non è un tipo<Source>
valido, il proxy API non riesce e restituisce l'errore:steps.xml2json.InvalidSourceType
Risoluzione
Assicurati che il tipo di variabile utilizzata per specificare l'elemento <Source>
sia valido. I tipi di <Source>
validi sono message
e string
.
Per evitare l'errore di cui sopra con il criterio XML di JSON, puoi utilizzare la variabile request
di tipo message
o qualsiasi altra stringa che sia un payload XML valido.