Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
SourceUnavailable
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 di stringa o message specificata nell'elemento <Source>
del criterio XML to JSON è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio XML to JSON deve essere eseguito nel flusso di richieste, ma l'elemento <Source>
è impostato sulla variabile response
, che non esiste nel flusso di richieste.
Diagnosi
Identifica il criterio XML to JSON in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstring
della risposta all'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 XML to JSON 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 XML to JSON specifica una variabile denominataresponse
nell'elemento<Source>
, che corrisponde a quella infaultstring
:<?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 XML to JSON.Se la variabile è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- non può essere risolto (non è definito)
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 da XML a 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 to JSON non riuscito sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio XML to JSON di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo da utilizzare la variabile request
così com'è presente nel flusso di 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>
ExecutionFailed
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
Le possibili cause di questo errore sono:
Causa | Descrizione |
Payload di input mancante | Il payload di input (XML) è vuoto. |
Input non valido o non corretto | L'input (XML) passato al criterio XML to JSON non è valido o non è formattato correttamente. |
Causa: payload di input mancante
Questo errore si verifica nel criterio di conversione da XML a JSON se i contenuti (payload) della variabile specificata nell'elemento <Source>
sono vuoti.
Ad esempio, se l'elemento <Source>
nel criterio da XML a JSON è impostato come variabile request
o response
e dovrebbe contenere un payload XML, questo errore si verifica se il payload è vuoto.
Diagnosi
Identifica il criterio XML to 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 XML to JSON con errore e determina la variabile specificata. Ad esempio, il seguente criterio XML to JSON ha l'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.Nel criterio di esempio da XML a JSON mostrato 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 pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare le sostituzioni della configurazione.Poiché il payload della richiesta XML è vuoto, viene visualizzato il codice di errore:
steps.xml2json.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è impostato su response, ma il server di backend passa un payload vuoto.
Risoluzione
Assicurati che l'input passato al criterio da XML a JSON tramite l'elemento <Source>
sia un payload XML valido e che non sia vuoto.
Per risolvere il problema con il criterio da XML a JSON di esempio, 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>
Esegui la chiamata all'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 pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare la configurazione override.
Causa: input non valido o con formato non corretto
Se il criterio da XML a JSON analizza un input non valido o non valido, viene visualizzato questo errore.
Ad esempio, se il seguente XML non valido viene fornito come input al criterio XML to 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
Identifica 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 criterio XML to JSON XML con errori. Ad esempio, il seguente criterio XML to 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 che l'input specificato nell'elemento
<Source>
del criterio da XML a JSON sia un payload XML valido. Se l'input non è valido o è in un formato non corretto, è questa la causa dell'errore.Nel criterio di esempio da XML a JSON mostrato sopra, il seguente codice XML non valido è stato passato al criterio di estrazione delle variabili tramite il file
city.xml
:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
Ecco la chiamata API di esempio che mostra come è stata passata 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 pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare le sostituzioni della configurazione.Il payload XML passato all'API non è valido perché non ha un tag di chiusura per l'elemento
<root>
. Ricevi il codice di errore:steps.xml2json.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato su response, ma il payload della risposta XML del server di backend non è valido o non ha un formato corretto.
Risoluzione
Assicurati che l'input passato al criterio XML to JSON tramite l'elemento <Source>
sia valido e non con formato non valido.
Per risolvere il problema relativo al criterio di esempio da XML a JSON discusso sopra, 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>
OutputVariableIsNotAvailable
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
Identifica il criterio XML to 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 to JSON non riuscito, verifica se manca
<OutputVariable>
.Di seguito è riportato un criterio da XML a JSON 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="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Format>google</Format> <Source>TrackingNumber</Source> </XMLToJSON>
Determina il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice nel bundle del proxy API, dove la variabile è stata definita per la prima volta.
- Una volta individuato il criterio in cui la variabile è definita e compilata per la prima volta, devi determinare il tipo di variabile come segue:
- Controlla il valore dell'attributo type (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo della variabile è
string
, è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta il Riferimento sulle variabili.
Ad esempio, guarda la variabile TrackingNumber nel criterio XML to JSON riportato sopra. È di tipo stringa. Ora consideriamo un criterio Assegna messaggio utilizzato per impostare il valore su 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>
è di tipo stringa. La variabileTrackingNumber
è di tipo stringa.A questo punto, ricorda che la variabile
TrackingNumber
viene utilizzata nell'elemento<Source>
del criterio da XML a JSON:<Source>TrackingNumber</Source>
Poiché
TrackingNumber
è di tipo stringa e<OutputVariable>
non è presente nel criterio, ricevi il codice di errore:steps.xml2json.OutputVariableIsNotAvailable
Risoluzione
Assicurati che se la variabile specificata nell'elemento <Source>
del criterio XMLToJSON sia di tipo stringa, in questo caso l'elemento <OutputVariable>
è obbligatorio.
Per correggere il criterio da XML a JSON discusso sopra, 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>
InCompatibleTypes
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 definita nell'elemento <Source>
e nell'elemento <OutputVariable>
non sono uguali. È obbligatorio che il tipo delle variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrisponda.
The valid types are message and string.
Diagnosi
Identifica il criterio XML to 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 in
<OutputVariable>
.Ecco 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 all'interno del pacchetto del proxy API, dove sono state definite per la prima volta tutte queste variabili.
- Una volta stabilito il criterio in cui la variabile viene definita e compilata per primo, devi stabilire il tipo di variabile come segue:
- Controlla il valore dell'attributo type (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo di variabile specificato in
<Source>
èstring
, mentre il tipo<OutputVariable>
è un messaggio o viceversa, è questa la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta la documentazione di riferimento sulle variabili.
Considera ad esempio il criterio Assegna messaggio utilizzato per impostare un valore su una variabile denominata
TrackingNumber
, come illustrato 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>
è di tipo 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>
Poiché
TrackingNumber
è di tipostring
, mentre la variabileresponse
è di tipomessage
, si tratta di tipi incompatibili, pertanto ricevi il codice di errore:steps.xml2json.InCompatibleTypes
L'errore riportato sopra può verificarsi anche se la variabile nell'elemento
<Source>
è di tipomessage
, mentre la variabile nell'elemento<OutputVariable>
è di tipo stringa.
Risoluzione
Assicurati che il tipo di variabile definito nell'elemento <Source>
e nell'elemento <OutputVariable>
sia sempre lo stesso. È obbligatorio che il tipo di variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrisponda.
Per correggere il criterio da XML a JSON discusso sopra, puoi dichiarare un'altra variabile TrackingNumber_output
di tipo string
utilizzando il criterio Assegna messaggio e utilizzare questa variabile nell'elemento <OutputVariable>
del criterio da XML a JSON.
Modificato criterio di assegnazione messaggio:
<?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>
InvalidSourceType
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
Identifica il tipo di origine non valida utilizzato nel criterio da XML a JSON. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nel seguente errore, il tipo non valido è un numero 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 to 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 all'interno del bundle del proxy API, dove questa variabile è stata definita per la prima volta.
- Una volta stabilito il criterio in cui la variabile viene definita e compilata per primo, devi stabilire il tipo di 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 della variabile specificata in
<Source>
non è némessage
néstring
, questo è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta la documentazione di riferimento sulle variabili.
Considera ad esempio un criterio ExtractVariables utilizzato per estrarre il valore da un payload XML e imposta il valore sulla variabile
BookCode
in modo che sia di 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 utilizzato per specificare l'elemento <Source>
sia valido. I tipi <Source>
validi sono message
e string
.
Per evitare l'errore riportato sopra con il criterio da XML a JSON, potresti usare la variabile request
, che è di tipo message
o qualsiasi altra stringa che sia un payload XML valido.