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 message o stringa specificata nell'elemento <Source> del criterio XML in JSON è:
- al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) 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 richiesta, ma l'elemento <Source> è impostato sulla variabile response, che non esiste nel flusso di richiesta.
Diagnosi
Identifica la policy XML to JSON in cui si è verificato l'errore e il nome della variabile non disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy èConvert-XMLToJSONe la variabile èresponse:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"Nel file XML della policy XML in formato JSON non riuscita, 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, la seguente norma XML in JSON specifica una variabile denominataresponsenell'elemento<Source>, che corrisponde a ciò che si trova 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 in JSON.Se la variabile è:
- al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguita la policy) o
- non può essere risolto (non è definito)
allora è questa la causa dell'errore.
Ad esempio, supponiamo che la norma XML to JSON mostrata sopra debba essere eseguita nel flusso request. Ricorda che la variabile
responseviene utilizzata nell'elemento<Source>del criterio XML to 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 in JSON non riuscito sia definita ed esista nel flusso in cui viene eseguito il criterio.
Per correggere la policy XML in JSON di esempio mostrata sopra, puoi modificare l'elemento <Source> in modo che utilizzi la variabile request così come esiste 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>
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 malformato | L'input (XML) passato al criterio XML to JSON non è valido o è malformato. |
Causa: payload di input mancante
Nell'XML to JSON policy, questo errore si verifica se il contenuto (payload) della variabile specificata nell'elemento <Source> è vuoto.
Ad esempio, se l'elemento <Source> nel criterio XML to JSON è impostato come variabile request o response e deve contenere un payload XML, questo errore si verifica se il payload è vuoto.
Diagnosi
Identifica la policy XML to JSON in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy è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 della policy XML in JSON non riuscito e determina la variabile specificata. Ad esempio, i seguenti criteri XML in JSON hanno l'elemento<Source>impostato su request:<?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 è il motivo dell'errore.Nell'esempio di policy XML to 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 tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.Poiché il payload della richiesta XML è vuoto, ricevi il codice di errore:
steps.xml2json.ExecutionFailedQuesto errore può verificarsi anche se l'elemento
<Source>è impostato su response, ma il server di backend trasmette 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 non vuoto.
Per risolvere il problema con la policy XML to 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>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 pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.
Causa: input non valido o malformato
Se la norma XML to JSON analizza un input non valido o non corretto, 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>
riceverai il messaggio di errore:
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Diagnosi
Identifica la policy XML to JSON in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy è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 dei criteri XML in JSON non riuscito. Ad esempio, la seguente policy 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 se l'input specificato nell'elemento
<Source>del criterio XML To JSON è un payload XML valido. Se l'input non è valido o ha un formato non corretto, questo è il motivo dell'errore.Nella policy XML to JSON di esempio mostrata sopra, il seguente XML non valido è stato trasmesso alla policy 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 la chiamata API di esempio 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 pubblico utilizzato per accedere alle tue API, come configurato nella proprietà
virtualhosts.hostAliasesnel file di override. Consulta Specificare gli override della configurazione.Il payload XML trasmesso all'API non è valido, in quanto l'XML non ha un tag di chiusura per l'elemento
<root>. Pertanto, ricevi il codice di errore:steps.xml2json.ExecutionFailedQuesto 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 da XML a JSON tramite l'elemento <Source> sia valido e non danneggiato.
Per risolvere il problema con il criterio di esempio da XML a JSON descritto sopra, trasmetti 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 XML in 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 la policy XML to JSON in cui si è verificato l'errore. Puoi trovare questa informazione nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy èConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."Nella convalida della policy XML in JSON non riuscita, verifica se manca
<OutputVariable>.Ecco un esempio di policy XML in formato JSON a 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 del proxy API in cui è stata definita per la prima volta la variabile.
- Una volta individuata la policy in cui la variabile viene definita e compilata per prima, devi determinare il tipo di variabile nel seguente modo:
- 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 è
string, questo è il motivo dell'errore. Puoi scoprire di più sulle variabili comuni e sui relativi tipi nella Guida di riferimento alle variabili.
Ad esempio, esamina la variabile TrackingNumber nel criterio XML in JSON riportato sopra. È di tipo stringa. Ora considera una policy Assign Message utilizzata per impostare il valore di una variabile denominata
TrackingNumbercome 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. Pertanto, la variabileTrackingNumberè di tipo stringa.Ora, ricorda che la variabile
TrackingNumberviene utilizzata nell'elemento<Source>del criterio XML To JSON:<Source>TrackingNumber</Source>Poiché
TrackingNumberè di tipo stringa e<OutputVariable>non è presente nella policy, ricevi il codice di errore:steps.xml2json.OutputVariableIsNotAvailable
Risoluzione
Assicurati che se la variabile specificata nell'elemento <Source> del criterio XMLToJSON è di tipo stringa, l'elemento <OutputVariable> sia obbligatorio in questo caso.
Per correggere il criterio XML To JSON descritto 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>
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 definito nell'elemento <Source> e nell'elemento <OutputVariable> non è lo stesso. È obbligatorio che il tipo di variabili contenute nell'elemento <Source> e nell'elemento <OutputVariable> corrisponda.
The valid types are message and string.
Diagnosi
Identifica la policy XML to JSON in cui si è verificato l'errore. Puoi trovare questa informazione nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy èXMLToJSON_CheckType:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."Nella nota relativa al criterio XML to JSON non riuscito, prendi nota dei valori specificati in
<OutputVariable>.Ecco un esempio di criterio XMLToJSON a 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 specificata negli elementi
<Source>e<OutputVariable>:- Individua il codice all'interno del bundle del proxy API, dove è stata definita per prima ciascuna di queste variabili.
- Una volta individuata la policy in cui la variabile viene definita e compilata per prima, devi determinare il tipo di variabile nel seguente modo:
- 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>èstringmentre il tipo di<OutputVariable>è messaggio o viceversa, questa è la causa dell'errore. Puoi scoprire di più sulle variabili comuni e sui relativi tipi nella Guida di riferimento alle variabili.
Ad esempio, considera un criterio Assegna messaggio utilizzato per impostare un valore per una variabile denominata
TrackingNumbercome 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. Pertanto, la variabileTrackingNumberè di tipo stringa.Ora, ricorda che la variabile
TrackingNumberviene utilizzata nell'elemento<Source>del criterio XMLToJSON:<Source>TrackingNumber</Source>Analogamente, ricorda che la variabile
requestviene utilizzata nell'elemento<OutputVariable>del criterio XML To JSON:<OutputVariable>request</OutputVariable>Poiché
TrackingNumberè di tipostringmentre la variabileresponseè di tipomessage, i tipi sono incompatibili, quindi ricevi il codice di errore:steps.xml2json.InCompatibleTypesL'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> sia sempre lo stesso. È obbligatorio che il tipo di variabili contenute nell'elemento <Source> e nell'elemento <OutputVariable> corrisponda.
Per correggere il criterio XML To JSON descritto sopra, puoi dichiarare un'altra variabile TrackingNumber_output di tipo string utilizzando il criterio Assign Message e utilizzare questa variabile nell'elemento <OutputVariable> del criterio XML To JSON.
Norme relative all'assegnazione dei messaggi modificate:
<?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>
Policy XMLToJSON modificata:
<?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 valido utilizzato nel criterio XML in JSON. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nel seguente errore, il tipo non valido è integer.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."Esamina tutti i criteri XML in JSON nel proxy API specifico in cui si è verificato l'errore. Nella nota relativa al criterio XML in JSON non riuscito, annota il 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 in cui è stata definita per la prima volta questa variabile.
- Una volta individuata la policy in cui la variabile viene definita e compilata per prima, devi determinare il tipo di variabile nel seguente modo:
- 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 è di tipomessageostring, questo è il motivo dell'errore. Puoi scoprire di più sulle variabili comuni e sui relativi tipi nella Guida di riferimento alle variabili.
Ad esempio, considera una norma ExtractVariables utilizzata per estrarre il valore da un payload XML e imposta il valore della variabile
BookCodesul tipointegercome 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
BookCodeviene 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 a essere eseguito e viene visualizzato 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 sopra descritto con il criterio XML to JSON, puoi utilizzare la variabile request di tipo message o qualsiasi altra stringa che sia un payload XML valido.