Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
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" } } }
Messaggio di errore di esempio
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
Causa
Questo errore si verifica se la variabile message o stringa specificata nell'elemento <Source>
del criterio da XML a JSON corrisponde a:
- 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 si prevede che il criterio da XML a JSON debba 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 XML a JSON in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi gli 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 codice XML del criterio XML to JSON non riuscito, verifica che il nome del set di variabili 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 al contenuto 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 da XML a 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 da XML a JSON non riuscito sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio da XML a JSON di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo da utilizzare la variabile request
esistente 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 input mancante | Il payload di input (XML) è vuoto. |
Input non valido o non corretto | L'input (XML) passato al criterio da XML a JSON non è valido o è in un formato non corretto. |
Causa: payload di input mancante
Nel criterio da XML a JSON, 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 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 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 XML to JSON con errore e determina la variabile specificata. Ad esempio, per il seguente criterio da XML a JSON è impostato l'elemento<Source>
per la 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, questo è la causa dell'errore.Nel criterio da XML a JSON di esempio 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 visibile al pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
nel file degli override. Consulta Specificare gli override 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 come risposta, 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 il contenuto seguente:
<?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 API, come configurato nella proprietà
virtualhosts.hostAliases
nel file degli override. Consulta Specificare gli override della configurazione.
Causa: input non valido o non corretto
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 codice 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
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 file XML con il criterio XML-JSON non valido. Ad esempio, nel seguente criterio da XML a JSON 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 visibile al pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
nel file degli override. Consulta Specificare gli override della configurazione.Il payload XML passato all'API non è valido, poiché il file XML non ha un tag di chiusura per l'elemento
<root>
. Quindi viene visualizzato il codice di errore:steps.xml2json.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato come risposta, ma il payload della risposta XML dal server di backend non è valido o è in un formato non corretto.
Risoluzione
Assicurati che l'input trasmesso al criterio da XML a JSON tramite l'elemento <Source>
sia valido e non in un formato corretto.
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" } } }
Messaggio di errore di esempio
{
"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 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 da XML a JSON non riuscito, esegui la convalida 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 all'interno del bundle proxy API, dove è stata definita prima la variabile.
- 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 è
string
, questo è 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 da XML a 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
è un tipo di stringa e nel criterio manca<OutputVariable>
, viene visualizzato 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" } } }
Messaggio di errore di esempio
{
"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 di variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrisponda.
The valid types are message and string.
Diagnosi
Identifica 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 da XML a JSON non riuscito, prendi nota dei valori specificati in
<OutputVariable>
.Ecco un criterio XMLToJSON di esempio in cui manca
<OutputVariable>
elemento<?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 bundle proxy API, dove ognuna di queste variabili è stata definita per prima.
- 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 il 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.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 da XML a JSON:<OutputVariable>request</OutputVariable>
Poiché
TrackingNumber
è di tipostring
mentre la variabileresponse
è di tipomessage
, sono tipi incompatibili, pertanto viene visualizzato 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 definita 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" } } }
Messaggio di errore di esempio
{
"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 da XML a 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 proxy API, dove questa variabile è stata definita prima.
- 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 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 il 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>
A questo punto, ricorda che la variabile
BookCode
viene utilizzata nell'elemento<Source>
del criterio da XML a 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 di <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.