Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
RequestVariableNotMessageType
Codice di errore
steps.servicecallout.RequestVariableNotMessageType
Corpo della risposta di errore
{ "fault": { "faultstring": "ServiceCallout[policy_name]: request variable [variable_name] value is not of type Message", "detail": { "errorcode": "steps.servicecallout.RequestVariableNotMessageType" } } }
Causa
Questo errore si verifica se una variabile specificata nell'elemento <Request> della policy Service Callout non è di tipo messaggio. Se la variabile è una stringa o un altro tipo non di messaggio, viene visualizzato questo errore.
Le variabili di tipo messaggio rappresentano intere richieste e risposte HTTP. Le variabili di flusso Edge integrate request, response e message sono di tipo messaggio. Per saperne di più sulle variabili di messaggio, consulta il riferimento alle variabili.
Diagnosi
Identifica la policy Service Callout in cui si è verificato l'errore e il nome della variabile il cui tipo non è corretto. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nella seguentefaultstring, il nome della policy èExecuteGeocodingRequeste la variabile èPostalCode:"faultstring": "ServiceCallout[ExecuteGeocodingRequest]: request variable PostalCode value is not of type Message"Nel file XML della policy Service Callout non riuscita, verifica che il nome della variabile impostata nell'elemento
<Request>corrisponda al nome della variabile identificata nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy specifica una variabile di richiesta denominataPostalCode, che corrisponde a quella presente infaultstring:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? ServiceCallout >name=<"ExecuteGeocodingRequest&>quot;< Req>uest variable=&qu<ot;Postal>Code&<quot;/ ResponseG>eocodingR<esp>onse/Response HTTPTargetConnection U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL /HTTPTargetConnection /ServiceCalloutDetermina se questa variabile è di tipo messaggio o meno:
- Individua il codice all'interno del bundle del proxy API in cui è stata definita per la prima volta la variabile.
- Nella maggior parte dei casi, la variabile problematica viene creata e compilata in un'altra policy eseguita prima della policy Service Callout. Ad esempio, la policy Assign Message è di uso comune per creare e compilare variabili in un flusso di proxy API.
- Una volta individuata la policy in cui la variabile viene definita e compilata per la prima volta, devi determinare il tipo di variabile nel seguente modo:
- Controlla il valore dell'attributo
type(se presente). - Se l'attributo
typenon è presente, la variabile viene considerata una stringa.
- Controlla il valore dell'attributo
- Se il tipo di variabile non è di tipo messaggio (ad esempio una stringa), questa è la causa dell'errore. Puoi scoprire di più sulle variabili comuni e sui relativi tipi nel riferimento alle variabili.
Ad esempio, supponiamo che la variabile PostalCode a cui si fa riferimento nella policy Service Callout sia stata creata nella seguente policy Assign Message. Tieni presente che a PostalCode viene assegnato il valore della variabile di flusso request.queryparam.postalcode. Questo valore è una stringa, perché non è presente alcun attributo type nell'assegnazione della variabile.
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage n>ame="<;GenerateGeocodingRequest"
>AssignTo createN<ew=">true&<quo>t; type=&<quot;reques>t"Geocod<ingRequest/AssignTo
S>et
QueryParams
< QueryPa>ram name=&quo<t;address"{request.>queryparam.postalcode}/Query<Param
> QueryP<aram name="region&q>uot;{<request.que>ryparam.c<ountry}/Quer>yParam
< > < Qu>eryPa<ram >name=<"sensor&q>uot;false</Que>ryParam
< > /QueryPa<ram>s
VerbGET/Verb
/S<et
> As<signVariable
> < NamePostalCod>e/Name
< > Refre<quest>.querypar<am.>postalcode/Ref
/Assign<Vari>able
< AssignVaria>b<le
Nam>eCountry/Name
Refrequest.queryparam.country/Ref
/AssignVariable
/AssignMessage
Ora, ricorda che la variabile PostalCode viene utilizzata nell'elemento <Request> della policy Service Callout:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ServiceCallout >name=<"ExecuteGeocodingRequest&>quot;<
Req>uest variable=&qu<ot;Postal>Code&<quot;/
ResponseG>eocodingR<esp>onse/Response
HTTPTargetConnection
U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL
/HTTPTargetConnection
/ServiceCallout
Poiché PostalCode non è di tipo messaggio (in questo esempio è una stringa), ricevi il codice di errore: steps.servicecallout.RequestVariableNotMessageType.
Risoluzione
Assicurati che la variabile impostata nell'elemento <Request> della policy Service Callout non riuscita sia una variabile di flusso di tipo messaggio esistente oppure puoi creare una nuova variabile di tipo messaggio direttamente nella policy Service Callout (come spiegato nella documentazione della policy) e utilizzarla.
Per correggere la policy, devi modificare l'elemento <Request> in modo da specificare una variabile esistente o nuova di tipo messaggio. Ad esempio, la variabile GeocodingRequest impostata nella policy Assign Message è di tipo messaggio e funzionerebbe perfettamente nella policy Service Callout. Ad esempio:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ServiceCallout >name=<"ExecuteGeocodingRequest"
> R<equest v>ariable="Geo<codingReq>uest&<quot;/
ResponseG>eocodingR<esp>onse/Response
HTTPTargetConnection
U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL
/HTTPTargetConnection
/ServiceCallout
RequestVariableNotRequestMessageType
Codice di errore
steps.servicecallout.RequestVariableNotRequestMessageType
Corpo della risposta di errore
{
"fault": {
"faultstring": "ServiceCallout[policy_name]: request variable [variable_name] value is not of type Request Message",
"detail": {
"errorcode": "steps.servicecallout.RequestVariableNotRequestMessageType"
}
}
}
Causa
Questo errore si verifica se una variabile specificata nell'elemento <Request> della policy Service Callout non è di tipo messaggio di richiesta. Se la variabile è di tipo messaggio di risposta, una stringa o un altro tipo, viene visualizzato questo errore.
Le variabili di tipo messaggio rappresentano intere richieste e risposte HTTP. Le variabili di flusso Edge integrate request, response e message sono di tipo messaggio. Per saperne di più sulle variabili di messaggio, consulta il riferimento alle variabili.
Diagnosi
Identifica la policy Service Callout in cui si è verificato l'errore e il nome della variabile il cui tipo non è corretto. Puoi trovare entrambi questi elementi nell'elemento
faultstringdella risposta di errore. Ad esempio, nella seguentefaultstring, il nome della policy èExecuteGeocodingRequeste la variabile èvar_response:"faultstring": "ServiceCallout[ExecuteGeocodingRequest]: request variable var_response value is not of type Message"Nel file XML della policy Service Callout non riuscita, verifica che il nome della variabile impostata nell'elemento
<Request>corrisponda al nome della variabile identificata nella stringa di errore (passaggio 1 sopra). Ad esempio, la seguente policy specifica una variabile di richiesta denominatavar_response, che corrisponde a quella presente infaultstring:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? ServiceCallout >name=<"ExecuteGeocodingRequest&qu>ot; < Reque>st variable="<;var_resp>onse&<quot;/ ResponseG>eocodingR<esp>onse/Response HTTPTargetConnection U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL /HTTPTargetConnection /ServiceCalloutDetermina se la variabile è di tipo messaggio di richiesta o meno:
- Individua il codice all'interno del bundle del proxy API in cui è stata definita per la prima volta la variabile.
- Nella maggior parte dei casi, la variabile problematica viene creata e compilata in un'altra policy eseguita prima della policy Service Callout. Ad esempio, la policy Assign Message è di uso comune per creare e compilare variabili in un flusso di proxy API.
- Una volta individuata la policy in cui la variabile viene definita e compilata per la prima volta, devi determinare il tipo di variabile nel seguente modo:
- Controlla il valore dell'attributo
type(se presente). - Se l'attributo
typenon è presente, la variabile viene considerata una stringa.
- Controlla il valore dell'attributo
- Se il tipo di variabile non è di tipo messaggio di richiesta, questa è la causa dell'errore. Puoi scoprire di più sulle variabili comuni e sui relativi tipi nel riferimento alle variabili.
Ad esempio, supponiamo che la variabile var_response a cui si fa riferimento nella policy Service Callout sia stata creata nella seguente policy Assign Message. Tieni presente che a var_response viene assegnato il tipo response. Pertanto, il tipo della variabile var_response è messaggio di risposta.
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage n>ame="<;GenerateGeocodingRequest"
>AssignTo createN<ew=">true&<quot; type="request"GeocodingRe>quest/Assign<To
As>signT<o c>reateNew=<"true&>quot; type=&q<uot;response"var_res>ponse/AssignTo
Set
<QueryParams>
<QueryParam name="ad>dress"{request.querypar<am.postalco>de}/QueryPara<m
QueryParam> name<="regi>on"{<request.quer>yparam.co<untr>y}/<Query>Param<
> < QueryParam> name=&qu<ot;s>ensor"<;fals>e/QueryPa<ram>
/QueryParams
< Ver>bGET/<Verb
/Set
> As<signVariable
> Na<mePo>stalCod<e/Nam>e
< Re>frequest.queryparam.postal<code>/Ref
< /AssignVari>a<ble
Assign>Variable
NameCountry/Name
Refrequest.queryparam.country/Ref
/AssignVariable
/AssignMessage
Ricorda che la variabile var_response viene utilizzata nell'elemento <Request> della policy Service Callout.
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ServiceCallout >name=<"ExecuteGeocodingRequest&qu>ot;
< Reque>st variable="<;var_resp>onse&<quot;/
ResponseG>eocodingR<esp>onse/Response
HTTPTargetConnection
U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL
/HTTPTargetConnection
/ServiceCallout
Poiché var_response non è di tipo messaggio di richiesta (il suo tipo è messaggio di risposta), ricevi il codice di errore: steps.servicecallout.RequestVariableNotRequestMessageType.
Risoluzione
Assicurati che la variabile impostata nell'elemento <Request> della policy Service Callout non riuscita sia una variabile di tipo messaggio di richiesta esistente oppure puoi creare una nuova variabile di tipo messaggio di richiesta direttamente nella policy Service Callout (come spiegato nella documentazione della policy) e utilizzarla.
Per correggere la policy, devi modificare l'elemento <Request> in modo da specificare una variabile esistente o nuova di tipo messaggio di richiesta, che funzionerà nella policy Service Callout. Ad esempio:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ServiceCallout >name=<"ExecuteGeocodingRequest"
> R<equest v>ariable="Geo<codingReq>uest&<quot;/
ResponseG>eocodingR<esp>onse/Response
HTTPTargetConnection
U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL
/HTTPTargetConnection
/ServiceCallout
ExecutionFailed
Codice di errore
steps.servicecallout.ExecutionFailed
Corpo della risposta di errore
{
"fault": {
"faultstring": "Execution of ServiceCallout [policy_name] failed. Reason: Host not reachable",
"detail": {
"errorcode": "steps.servicecallout.ExecutionFailed"
}
}
}
o
{
"fault": {
"faultstring": "Execution of ServiceCallout [policy_name] failed. Reason: ResponseCode [http_code] is treated as error",
"detail": {
"errorcode": "steps.servicecallout.ExecutionFailed"
}
}
}
Possibili cause
Le possibili cause di questo errore sono:
| Causa | Descrizione |
| URL non valido o con formato errato | L'URL di destinazione nella policy Service Callout ha un formato errato o ha un nome host non valido o non raggiungibile. |
| Errore del server di backend | Il server di backend restituisce una risposta di errore 4XX o 5XX. |
Causa: URL non valido o con formato errato
L'URL di destinazione nella policy Service Callout ha un formato errato o ha un nome host non valido o non raggiungibile.
Diagnosi
Identifica la policy Service Callout che ha causato l'errore. Il nome della policy viene visualizzato nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy Service Callout non riuscita èExecuteGeocodingRequest."faultstring": "ServiceCallout[ExecuteGeocodingRequest]"Nella policy Service Callout non riuscita, esamina l'elemento
<URL>. Se il formato è errato o ha un nome host non valido o non raggiungibile, questa è la causa dell'errore. Ad esempio, la seguente policy Service Callout specifica un<URL>non valido:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? ServiceCallout >name=<"ExecuteGeocodingRequest" > R<equest v>ariable="Geo<codingReq>uest&<quot;/ ResponseG>eocodingR<esp>onse/Re<spon>se < HTTPTargetConnectio>n< URLhtt>p:///URL /HTTPTargetConnection /ServiceCalloutL'elemento
<URL>ha solo il protocollohttp://, ma non ha un nome host valido; pertanto, la policy Service Callout non riesce a causa dell'errore:Execution of ServiceCallout ExecuteGeocodingRequest failed. Reason: Host not reachable.
Risoluzione
Assicurati che l'elemento <URL> nella policy Service Callout non riuscita abbia un URL valido con un nome host raggiungibile.
Per correggere la policy Service Callout mostrata sopra, puoi modificare l'elemento <URL> in modo da specificare un URL valido:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ServiceCallout >name=<"ExecuteGeocodingRequest"
> R<equest v>ariable="Geo<codingReq>uest&<quot;/
ResponseG>eocodingR<esp>onse/Response
HTTPTargetConnection
U<RLht>tp://<maps.googleapis.com/m>a<ps/api/geocode/>json/URL
/HTTPTargetConnection
/ServiceCallout
Causa: errore del server di backend
Il server di backend restituisce una risposta di errore 4XX o 5XX.
Diagnosi
Identifica la policy Service Callout che ha causato l'errore. Il nome della policy viene visualizzato nell'elemento
faultstringdella risposta di errore. Ad esempio, nel seguentefaultstring, il nome della policy Service Callout non riuscita èExecuteGeocodingRequest."faultstring": "ServiceCallout[ExecuteGeocodingRequest]Esamina la
faultstringnel corpo della risposta di errore e controlla se sono presenti codici di risposta 4XX o 5XX elencati inReason. Ad esempio, la seguente stringa di errore indica chiaramente che il server di backend ha restituito un codice di risposta 502:"faultstring": "Execution of ServiceCallout ExecuteGeocodingRequest failed. Reason: ResponseCode 502 is treated as error"
Risoluzione
Una volta determinato il codice di risposta di errore, puoi risolvere il problema come faresti con qualsiasi errore 4XX o 5XX. Consulta i playbook per gli errori di runtime (4XX/5XX) per istruzioni sulla risoluzione dei problemi e sulla risoluzione degli errori 4XX o 5XX.