Esta é a documentação do Apigee Edge.
Acesse a
documentação da
Apigee X. info
SourceUnavailable
Código do erro
steps.json2xml.SourceUnavailable
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Exemplo de erro
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Causa
Esse erro ocorrerá se a variável message especificada no elemento <Source>
da política JSON para XML se enquadrar em uma destas situações:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- Não é possível resolver (não está definida)
Por exemplo, esse erro ocorrerá se a política JSON para XML for executada no fluxo de solicitação, mas o elemento <Source>
for definido como a variável response
, que não existe no fluxo de solicitação.
Diagnóstico
Identifique a política JSON para XML em que o erro ocorreu e o nome da variável que não está disponível. É possível encontrar os dois itens no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éConvert-JSONToXML
e a variável éresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
No XML da política JSON para XML com falha, verifique se o nome da variável definida no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (etapa 1 acima). Por exemplo, a seguinte política JSON para XML especifica uma variável chamadaresponse
no elemento<Source>
, que corresponde ao que está emfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML>
Determine se a variável usada no elemento
<Source>
está definida e disponível no fluxo em que a política JSON para XML está sendo executada.Se a variável for:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- Não é possível resolver (não está definida)
essa será a causa do erro.
Por exemplo, digamos que a política JSON para XML mostrada acima seja executada no fluxo de solicitação. Lembre-se de que a variável
response
foi usada no elemento<Source>
da política JSON para XML. A variável de resposta está disponível apenas no fluxo de resposta.Como a variável
response
não existe no fluxo de solicitação, você recebe o código do erro:steps.json2xml.SourceUnavailable
Resolução
Verifique se a variável definida no elemento <Source>
da política JSON para XML com falha está definida e existe no fluxo em que a política é executada.
Para corrigir a política JSON para XML de exemplo mostrada acima, modifique o elemento <Source>
para usar a variável request
, porque ela existe no fluxo de solicitação:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML">
<DisplayName>Convert-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>request</Source>
</JSONToXML>
ExecutionFailed
Código do erro
steps.json2xml.ExecutionFailed
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Causas possíveis
Veja a seguir as possíveis causas para esse erro:
Causa | Descrição |
Payload de entrada ausente | O payload de entrada (JSON) está vazio. |
Entrada inválida ou malformada | A entrada (JSON) transmitida para a política JSON para XML é inválida ou está malformada. |
Causa: payload de entrada ausente
Na política JSON para XML, se o conteúdo (payload) da variável especificada no elemento <Source>
estiver vazio, esse erro ocorrerá.
Por exemplo, se o elemento <Source>
na política JSON para XML for definido como uma variável request
ou response
e precisar conter um payload JSON, mas se o payload estiver vazio, o erro ocorrerá.
Diagnóstico
Identifique a política JSON para XML em que o erro ocorreu. Você encontra essas informações no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examine o elemento
<Source>
no XML da política JSON para XML com falha e determine a variável especificada. Por exemplo, a seguinte política JSON para XML tem o elemento<Source>
definido comorequest
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONToXML async="false" continueOnError="f>a<lse" e>nabled="true<" name=>&<quot;Conver>t<-JSONTo>XML&q<uot; Disp>layN<ameConvert>-JSON<ToXML/DisplayName >Properties/< Options NullVa>lueNU<LL/NullValue Namespa>ceBlockN<ame#namespaces/NamespaceB>lockN<ame DefaultNam>e<spaceNodeName$defau>lt/De<faultNamespa>ceNod<eName Nam>espac<eSeparator:/Namesp>aceSep<arator TextNode>Name#<text/TextNodeNa>m<e AttributeB>lockN<ame#attrs/AttributeBloc>k<Name AttributePrefix>@/Att<ributePrefix Inva>lidC<harsReplacement_/Inval>idCha<rsReplacement Ob>jectR<ootElementNameRoot/Ob>jectR<ootElementName A>rray<RootElementNameArray/>A<rrayRoot>E<lementName > ArrayI<temElementNameI>t<em/Arr>ayItemE<lementN>a<me /Option>s
OutputVariablerequest/OutputVariable Sourcerequest/Source /JSONToXMLVerifique se a variável especificada para o elemento
<Source>
na política está vazia. Se estiver vazia, essa será a causa do erro.No exemplo da política JSON para XML mostrado acima, o payload da solicitação (ou seja, o corpo da solicitação) que foi enviado pelo cliente está vazio.
Exemplo:
curl -v "ht<tp:>/</or>g-env.apigee.net/v1/testjsontoxml" -H "Content-Type: app
lication/json"Como o payload de resposta JSON está vazio, você recebe o código do erro:
steps.json2xml.ExecutionFailed
Esse erro também poderá ocorrer se o elemento
<Source>
estiver definido como resposta, mas um payload vazio for transmitido pelo servidor de back-end.
Resolução
Verifique se a entrada transmitida para a política JSON para XML no elemento <Source>
é um payload JSON válido e não vazio.
Para corrigir o problema com a política JSON para XML de amostra, passe um payload JSON válido. Exemplo:
Crie um arquivo chamado
city.json
com o seguinte conteúdo:{ "Name":"Apigee", "City":"
Bengaluru", "Pincode":"560016" }Faça a chamada de API usando um comando curl da seguinte maneira:
curl -v "ht<tp:>/</or>g-env.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X PO
ST -d @company.json
Causa: entrada inválida ou malformada
Se a política JSON para XML analisar uma entrada inválida ou malformada, você receberá esse erro.
Por exemplo, se o JSON inválido a seguir for fornecido como entrada para a política JSON para XML,
[
"args": ["name&q
uot; : "Google" ]
]
você receberá o erro:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnóstico
Identifique a política JSON para XML em que o erro ocorreu. Você encontra essas informações no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examine o elemento
<Source>
especificado no XML da política JSON para XML com falha. Por exemplo, a seguinte política JSON para XML tem o elemento<Source>
definido como a variávelrequest
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONToXML async="false" continueOnError="f>als<e" ena>bled="true&q<uot; name=&q>uot<;Convert-JS>ONT<oXML&qu>ot; D<isplayNam>eCon<vert-JSONT>oXML/Di<splayName Proper>ties/ Opt<ions NullValu>eNULL/N<ullValue Namespace>BlockNam<e#namespaces/NamespaceBlo>ckName < DefaultNames>p<aceNodeName$default>/Defaul<tNamespaceNo>deNam<e Names>paceSep<arator:/NamespaceS>eparat<or TextNodeNa>me#text</TextNodeName > < AttributeBlo>ckName#<attrs/AttributeBlockNam>e< AttributePrefix@/>Attribu<tePrefix Invali>dCha<rsReplacement_/Invalid>CharsRe<placement Obje>ctRoo<tElementNameRoot/Obje>ctRootE<lementName Arr>ayRo<otElementNameArray/Ar>ray<RootElem>ent<Name Arr>ayItemE<lementNameItem/>Arr<ayItem>Element<Name >/<Options >O
utputVariablerequest/OutputVariable Sourcerequest/Source /JSONToXMLValide se a entrada especificada no elemento
<Source>
é um payload JSON válido. Se a entrada for inválida ou estiver malformada, essa será a causa do erro.Suponha que o seguinte JSON inválido foi passado para a política
[ "args": ["name&q
uot; : "Google" ] ]Veja o exemplo de uma chamada de API que mostra como a solicitação foi passada:
curl -v "ht<tp:>/</or>g-env.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "ar
gs" : ["name" : "Google" ]]'O payload JSON transmitido na solicitação é inválido porque o objeto JSON começa e termina com colchetes ([ ]). Por esse motivo, você recebe o código do erro:
steps.json2xml.ExecutionFailed
Esse erro também poderá ocorrer se o elemento
<Source>
tiver sido definido como resposta, mas o payload da resposta JSON for inválido ou estiver malformado.
Resolução
Verifique se a entrada transmitida para a política JSON para XML no elemento <Source>
é válida e não está malformada.
Para corrigir o problema com a política JSON para XML de amostra discutida acima, passe uma solicitação de payload JSON válida da seguinte forma:
{
"args" : {
"name"
: "Google"
}
}
OutputVariableIsNotAvailable
Código do erro
steps.json2xml.OutputVariableIsNotAvailable
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Exemplo de erro
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.js
on2xml.OutputVariableIsNotAvailable"
}
}
}
Causa
Esse erro ocorrerá se a variável especificada no elemento <Source>
da política JSON para XML for do tipo string e o elemento <OutputVariable>
não for definido. O elemento <OutputVariable>
é obrigatório quando a variável definida no elemento <Source>
é do tipo string.
Diagnóstico
Identifique a política JSON para XML em que o erro ocorreu. É possível encontrar isso no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is n
ot available."Na política JSON para XML com falha, valide se o
<OutputVariable>
está ausente.A seguinte amostra da política JSONToXML tem um elemento
<OutputVariable>
ausente:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONToXML async="false" continueOnError>=&quo<t;false&quo>t; enabled=&quo<t;true"> name<="JSON>ToXML<"<>/span> Displ<ayNameChe>ck-J<SONToXML/D>isplayNam<e Properties/ > Options< NullValueN>ULL/NullV<alue NamespaceBl>ockName#<namespaces/NamespaceBlock>Name < DefaultNamespa>c<eNodeName$default/D>efaultNam<espaceNodeNa>me < Namespa>ceSeparat<or:/NamespaceSepar>ator < TextNodeName>#text/Tex<tNodeName > < AttributeBlock>Name#attr<s/AttributeBlockName > < AttributePrefix@/At>tributePr<efix InvalidC>hars<Replacement_/InvalidCh>arsReplac<ement Object>RootE<lementNameRoot/Object>RootEleme<ntName Array>Root<ElementNameArray/Arra>yRoot<ElementN>ame < > ArrayItem<Element>N<ameItem/Ar>r
ayItemElementName /Options SourcePostalCode/Source /JSONToXMLDetermine o tipo de variável especificado no elemento
<Source>
:- Localize o código na API Proxy em que a variável foi definida primeiro.
- Depois de descobrir a política em que a variável é definida e preenchida primeiro, você precisará determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo de tipo (se houver).
- Se o atributo de tipo não estiver presente, a variável será considerada uma string.
- Se o tipo da variável for string, essa será a causa do erro. Saiba mais sobre as variáveis comuns e os tipos delas na Referência de variáveis.
Por exemplo, observe a variável
PostalCode
na política JSON para XML acima.Por exemplo, considere uma política "Atribuir mensagem" que é usada para atribuir um valor a uma variável chamada
PostalCode
, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? AssignMessage async="false" continueOnError="f>alse&<quot; enabl>ed="true&quo<t; name=&quo>t;Ass<ign_PostalC>ode&q<uot; Displ>ayNameAss<ign_>PostalCode</Disp>layName < Pr>operties/ Ass<ignVar>iable < > Name<PostalCode/Name> < Value{"value&quo>t;:&<quot;56008"}/Value > < Ref/ /AssignVariable IgnoreUnresolvedVariablestrue>/<IgnoreUnresolv>e
dVariables AssignTo createNew="false" transport="http" type="request"/ /AssignMessageObserve que o tipo de variável definido em
<AssignVariable>
é uma string. Portanto, a variávelPostalCode
é do tipo string.Lembre-se de que a variável
PostalCode
é usada no elemento<Source>
da política JSONToXML:<Source>PostalCode</Source>
Como
PostalCode
é do tipo string e o elemento<OutputVariable>
está ausente, você recebe o código do erro:steps.json2xml.OutputVariableIsNotAvailable
Resolução
Garanta que a variável especificada no elemento <Source>
da política JSONToXML seja do tipo string e o elemento <OutputVariable>
esteja definido na política.
Para corrigir a política JSONToXML discutida acima, inclua um elemento <OutputVariable>
, conforme mostrado abaixo.
<?xml version="1.0" encoding="UTF-8&quo>t; <standalone="yes"?
JSONToXML async="false" continueOnError>="<false"> enabled="<true" n>ame=&qu<ot;JSONToXM>L"<
>DisplayName<Check-JSO>NToX<ML/Display>Name
<Properties/
>Options
< NullValueNUL>L/NullValue<
NamespaceBloc>kName#na<mespaces/NamespaceBlockNa>me
< DefaultNamespace>N<odeName$default/Def>aultNamespa<ceNodeName
> < Namespace>Separator:/<NamespaceSeparator>
< TextNodeName#t>ext/TextNod<eName
> <AttributeBlockNa>me#attrs/At<tributeBlockName
> < AttributePrefix@/Attr>ibutePrefix<
InvalidCha>rsRe<placement_/InvalidChar>sReplacemen<t
ObjectRo>otEle<mentNameRoot/ObjectRo>otElementNa<me
ArrayRo>otEl<ementNameArray/ArrayR>ootElem<entName<>/span>
< ArrayItemEl>ementNam<eItem/ArrayItem>Element<Name
> /Opti<ons
> <OutputVari>a
bleresponse/OutputVariable
SourcePostalCode/Source
/JSONToXML
InCompatibleTypes
Código do erro
steps.json2xml.InCompatibleTypes
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Exemplo de erro
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": &qu
ot;steps.json2xml.InCompatibleTypes"
}
}
}
Causa
Esse erro ocorrerá se o tipo da variável definido no elemento <Source>
e o elemento <OutputVariable>
não forem os mesmos. É obrigatório que o tipo das variáveis contidas no elemento <Source>
e no elemento <OutputVariable>
seja igual.
Os tipos válidos são message
e string
.
Diagnóstico
Identifique a política JSON para XML em que o erro ocorreu. É possível encontrar isso no elemento
faultstring
da resposta de erro. Por exemplo, nofaultstring
a seguir, o nome da política éJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to
message type."Na política JSON para XML com falha, observe os valores especificados em
<OutputVariable>
e<Source>
.Veja o seguinte exemplo de política:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONToXML async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="JS>ONToX<ML_checktyp>e&quo<t; >DisplayNa<meJSONToX>ML_c<hecktype/D>isplayNam<e Properties/ > Options< NullValueN>ULL/NullV<alue NamespaceBl>ockName#<namespaces/NamespaceBlock>Name < DefaultNamespa>c<eNodeName$default/D>efaultNam<espaceNodeNa>me < Namespa>ceSeparat<or:/NamespaceSepar>ator < TextNodeName>#text/Tex<tNodeName > < AttributeBlock>Name#attr<s/AttributeBlockName > < AttributePrefix@/At>tributePr<efix InvalidC>hars<Replacement_/InvalidCh>arsReplac<ement Object>RootE<lementNameRoot/Object>RootEleme<ntName Array>Root<ElementNameArray/Arra>yRoot<ElementN>ame < ArrayIt>emElemen<tNameItem/Array>ItemE<lement>Name /<Options> < Output>Va
riableresponse/OutputVariable SourcePostalCode/Source /JSONToXMLDetermine o tipo de variável especificado nos elementos
<Source>
e<OutputVariable>
:- Localize o código na API Proxy em que cada uma dessas variáveis foi definida primeiro.
- Depois de descobrir a política em que a variável é definida e preenchida primeiro, você precisará determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo de tipo (se houver).
- Se o atributo de tipo não estiver presente, a variável será considerada uma string.
- Se o tipo da variável especificada em
<Source>
for string e o tipo de<OutputVariable>
for mensagem, ou vice-versa, essa será a causa do erro. Saiba mais sobre as variáveis comuns e os tipos delas na Referência de variáveis.
Como exemplo, considere uma política "Atribuir mensagem" usada para atribuir um valor a uma variável chamada
PostalCode
, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? AssignMessage async="false" continueOnError="f>alse&<quot; enabl>ed="true&quo<t; name=&quo>t;Ass<ign_PostalC>ode&q<uot; Displ>ayNameAss<ign_>PostalCode</Disp>layName < Pr>operties/ Ass<ignVar>iable < > Name<PostalCode/Name> < Value{"value&quo>t;:&<quot;56008"}/Value > < Ref/ /AssignVariable IgnoreUnresolvedVariablestrue>/<IgnoreUnresolv>e
dVariables AssignTo createNew="false" transport="http" type="request"/ /AssignMessageObserve que o tipo de variável definido em
<AssignVariable>
é string. Portanto, a variávelPostalCode
é do tipo string.Lembre-se de que a variável
PostalCode
é usada no elemento<Source>
da política JSONToXML:<Source>PostalCode</Source>
Da mesma forma, lembre-se de que a variável
response
é usada no elemento<OutputVariable>
da política JSONToXML:<OutputVariable>response</OutputVariable>
Como
PostalCode
é do tipo string e a variávelresponse
é do tipo mensagem, eles são tipos incompatíveis, portanto, você recebe o código do erro:steps.json2xml.InCompatibleTypes
O erro acima também poderá ocorrer se a variável no elemento
<Source>
for do tipomessage
, mas a variável no elemento<OutputVariable>
for do tipo string.
Resolução
Garanta que o tipo da variável definido no elemento <Source>
e no elemento <OutputVariable>
seja sempre o mesmo. É obrigatório que o tipo das variáveis contidas no elemento <Source>
e no elemento <OutputVariable>
seja igual. Ou seja, garanta que o tipo de ambos os elementos <Source>
e <OutputVariable>
seja string ou mensagem.
Para corrigir a política JSON para XML discutida acima, você pode declarar outra variável PostalCode_output
do tipo string usando a política "Atribuir mensagem" e usar essa variável no elemento <OutputVariable>
da política JSON para XML.
Política "Atribuir mensagem" modificada:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="f>alse&<quot; enabl>ed="true&quo<t; name=&quo>t;Ass<ign_PostalC>ode&q<uot;
Displ>ayNameAss<ign_>PostalCode</Disp>layName
< Pr>operties/
Ass<ignVar>iable
< > Name<PostalCode/Name>
< Value{&quo>t;value&q<uot;>:"56008"<;}/Va>lue
< R>ef/
< /AssignVaria>ble
< AssignVariable
> Nam<ePostalCode_output/Name
> < Ref/
/AssignVariable
IgnoreUnresolvedVariablestrue>/<IgnoreUnresolv>e
dVariables
AssignTo createNew="false" transport="http" type="request"/
/AssignMessage
Política JSONToXML modificada:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONToXML async="false" continueOnError>=&quo<t;false&quo>t; enabled="tr<ue" nam>e=&qu<ot;JSONToXM>L&quo<t;
>DisplayNa<meJSONToX>ML_c<hecktype/D>isplayNam<e
Properties/
> Options<
NullValueN>ULL/NullV<alue
NamespaceBl>ockName#<namespaces/NamespaceBlock>Name
< DefaultNamespa>c<eNodeName$default/D>efaultNam<espaceNodeNa>me
< Namespa>ceSeparat<or:/NamespaceSepar>ator
< TextNodeName>#text/Tex<tNodeName
> < AttributeBlock>Name#attr<s/AttributeBlockName
> < AttributePrefix@/At>tributePr<efix
InvalidC>hars<Replacement_/InvalidCh>arsReplac<ement
Object>RootE<lementNameRoot/Object>RootEleme<ntName
Array>Root<ElementNameArray/Arra>yRoot<ElementN>ame
< ArrayIt>emElementNameItem</ArrayItemEleme>ntNam<e
>/Options
< Outp>u<tVariableP>o
stalCode_output/OutputVariable
SourcePostalCode/Source
/JSONToXML
InvalidSourceType
Código do erro
steps.json2xml.InvalidSourceType
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Exemplo de erro
{
"fault": {
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": &qu
ot;steps.json2xml.InvalidSourceType"
}
}
}
Causa
Este erro ocorrerá se o tipo da variável usado para definir o elemento <Source>
for inválido. Os tipos válidos de variável são message
e string
.
Diagnóstico
Identifique o tipo de origem inválido usado na política JSON para XML. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o tipo inválido é "Inteiro".
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [mess
age, string]."Examine todas as políticas JSON para XML na API Proxy específica onde a falha ocorreu. Na política JSON para XML com falha, anote o nome da variável especificada em
<Source>
.Aqui está uma amostra de política que tem a variável chamada EmployeeID especificada no elemento
<Source>
:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONToXML async="false" continueOnError>=&quo<t;false&quo>t; enabled="<;true" >name=<"JSONT>oXML&<quot;
> Displa<yNameChec>k_So<urceType/D>isplayNam<e
Properties/
> Options<
NullValueN>ULL/NullV<alue
NamespaceBl>ockName#<namespaces/NamespaceBlock>Name
< DefaultNamespa>c<eNodeName$default/D>efaultNam<espaceNodeNa>me
< Namespa>ceSeparat<or:/NamespaceSepar>ator
< TextNodeName>#text/Tex<tNodeName
> < AttributeBlock>Name#attr<s/AttributeBlockName
> < AttributePrefix@/At>tributePr<efix
InvalidC>hars<Replacement_/InvalidCh>arsReplac<ement
Object>RootE<lementNameRoot/Object>RootEleme<ntName
Array>Root<ElementNameArray/Arra>yRoot<ElementN>ame
< ArrayIt>emEleme<ntNameItem/Arra>yItem<Elemen>tName
</Option>s<
Outpu>t
Variablerequest/OutputVariable
SourceEmployeeID/Source
/JSONToXML
Determine o tipo da variável especificado no elemento
<Source>
:- Localize o código na API Proxy em que essa variável foi definida primeiro.
- Depois de descobrir a política em que a variável é definida e preenchida primeiro, você precisará determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo de tipo (se houver).
- Se o atributo de tipo não estiver presente, a variável será considerada uma string.
- Se o tipo da variável especificado em
<Source>
não for do tipo mensagem nem string, essa será a causa do erro. Saiba mais sobre as variáveis comuns e os tipos delas na Referência de variáveis.
Como exemplo, vamos considerar que a política ExtractVariables é usada para extrair o valor de um payload JSON e define o valor como a variável
EmployeeID
do tipo inteiro, como mostrado abaixo:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? ExtractVariabl>es na<me=&qu>ot;Extr<actJSON>Varia<bles"<>/span> Sourc<erequest/Source JSONPayload V>ariable name=<"Em>ploy<eeID">; type=&q<uot;integ>er&qu<ot; > < JSONPath$.ID/J>S
ONPath /Variable /JSONPayload /ExtractVariablesLembre-se de que a variável
EmployeeID
é usada no elemento<Source>
da política JSONToXML:<Source>EmployeeID</Source>
Como o tipo dessa variável é
Integer
, que não é um tipo<Source>
válido, a API Proxy falha com o erro:steps.json2xml.InvalidSourceType
Resolução
Verifique se o tipo da variável usado para especificar o elemento <Source>
é
válido. Os tipos válidos de <Source>
são message
e string
.
Para evitar o erro acima com a política JSONToXML, você pode usar a variável de solicitação, que é do tipo mensagem, ou qualquer outra string que seja um payload JSON válido.