Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
SourceUnavailable
Código de 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
Este erro ocorre se a variável message especificada no elemento <Source>
da política de JSON para XML for:
- Fora do âmbito (não disponível no fluxo específico onde a política está a ser executada) ou
- Não é possível resolver (não está definido)
Por exemplo, este erro ocorre se a política de JSON para XML for suposta ser executada no fluxo de pedidos, mas o elemento <Source>
estiver definido para a variável response
, que não existe no fluxo de pedidos.
Diagnóstico
Identifique a política de JSON para XML onde ocorreu o erro e o nome da variável que não está disponível. Pode encontrar ambos os itens no elemento
faultstring
da resposta de erro. Por exemplo, no seguintefaultstring
, 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 de JSON para XML com falha, verifique se o nome da variável definido no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima). Por exemplo, a seguinte política de JSON para XML especifica uma variável denominadaresponse
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 no qual a política de JSON para XML está a ser executada.Se a variável for:
- Fora do âmbito (não disponível no fluxo específico onde a política está a ser executada) ou
- Não é possível resolver (não está definido)
Nesse caso, essa é a causa do erro.
Por exemplo, suponhamos que a política de JSON para XML apresentada acima se destina a ser executada no fluxo de pedido. Recorde que a variável
response
é usada no elemento<Source>
da política de JSON para XML. A variável de resposta só está disponível no fluxo de resposta.Uma vez que a variável
response
não existe no fluxo de pedidos, recebe o código de erro:steps.json2xml.SourceUnavailable
Resolução
Certifique-se de que a variável definida no elemento <Source>
da política JSON para XML com falha está definida e existe no fluxo onde a política é executada.
Para corrigir o exemplo de política JSON para XML apresentado acima, pode modificar o elemento <Source>
para usar a variável request
, porque existe no fluxo de pedidos:
<?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 de 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
As possíveis causas deste erro são:
Causa | Descrição |
Payload de entrada em falta | O payload de entrada (JSON) está vazio. |
Entrada inválida ou com formato incorreto | A entrada (JSON) transmitida à política de JSON para XML é inválida ou tem um formato incorreto. |
Causa: payload de entrada em falta
Na política de JSON para XML, se o conteúdo (payload) da variável especificada no elemento <Source>
estiver vazio, ocorre este erro.
Por exemplo, se o elemento <Source>
na política de JSON para XML estiver definido como uma variável request
ou response
e se destinarem a conter um payload JSON, mas o payload estiver vazio, ocorre o erro.
Diagnóstico
Identifique a política de JSON para XML onde ocorreu o erro. Pode encontrar estas informações no elemento
faultstring
da resposta de erro. Por exemplo, no seguintefaultstring
, 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 de JSON para XML com falhas e determine a variável especificada. Por exemplo, a seguinte política de JSON para XML tem o elemento<Source>
definido comorequest
:<?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>
Verifique se a variável especificada para o elemento
<Source>
na política está vazia. Se estiver vazio, é esse o motivo do erro.No exemplo de política JSON para XML apresentado acima, o payload do pedido (ou seja, o corpo do pedido) enviado pelo cliente está vazio.
Por exemplo:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
no ficheiro de substituições. Consulte Especifique substituições de configuração.Uma vez que o payload da resposta JSON está vazio, recebe o código de erro:
steps.json2xml.ExecutionFailed
Este erro também pode ocorrer se o elemento
<Source>
estiver definido como resposta, mas o servidor de back-end transmitir uma carga útil vazia.
Resolução
Certifique-se de que a entrada transmitida à política JSON para XML no elemento <Source>
é uma carga útil JSON válida e não está vazia.
Para corrigir o problema com a política de JSON para XML de exemplo, transmita um payload JSON válido. Por exemplo:
Crie um ficheiro denominado
city.json
com o seguinte conteúdo:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Faça a chamada da API através de um comando curl da seguinte forma:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
no ficheiro de substituições. Consulte Especifique substituições de configuração.
Causa: entrada inválida ou com formato incorreto
Se a política de JSON para XML analisar uma entrada inválida ou com formato incorreto, recebe este erro.
Por exemplo, se o seguinte JSON inválido for fornecido como entrada para a política JSON para XML:
[
"args": ["name" : "Google" ]
]
recebe o erro:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnóstico
Identifique a política de JSON para XML onde ocorreu o erro. Pode encontrar estas informações no elemento
faultstring
da resposta de erro. Por exemplo, no seguintefaultstring
, 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 de JSON para XML com falha. Por exemplo, a seguinte política de JSON para XML tem o elemento<Source>
definido como a variávelrequest
:<?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>
Valide se a entrada especificada no elemento
<Source>
é um payload JSON válido. Se a entrada for inválida ou tiver um formato incorreto, essa é a causa do erro.Suponha que o seguinte JSON inválido foi transmitido à política
[ "args": ["name" : "Google" ] ]
Segue-se o exemplo de chamada da API que mostra como o pedido foi transmitido:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
no ficheiro de substituições. Consulte Especifique substituições de configuração.O payload JSON transmitido no pedido é inválido porque o objeto JSON começa e termina com parênteses retos ([ ]). Por este motivo, recebe o código de erro:
steps.json2xml.ExecutionFailed
Este erro também pode ocorrer se o elemento
<Source>
tiver sido definido como resposta, mas a carga útil da resposta JSON for inválida ou tiver um formato incorreto.
Resolução
Certifique-se de que a entrada transmitida à política de JSON para XML no elemento <Source>
é válida e não tem um formato incorreto.
Para corrigir o problema com a política de JSON para XML abordada acima, transmita um pedido de payload JSON válido da seguinte forma:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Código de 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.json2xml.OutputVariableIsNotAvailable"
}
}
}
Causa
Este erro ocorre se a variável especificada no elemento <Source>
da política de JSON para XML for do tipo string e o elemento <OutputVariable>
não estiver definido. O elemento <OutputVariable>
é obrigatório quando a variável definida no elemento <Source>
é do tipo string.
Diagnóstico
Identifique a política de JSON para XML onde ocorreu o erro. Pode encontrá-lo no elemento
faultstring
da resposta de erro. Por exemplo, no seguintefaultstring
, o nome da política éCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
No JSON com falha, valide se o elemento
<OutputVariable>
está em falta.A seguinte política JSONToXML de exemplo tem um elemento
<OutputVariable>
em falta:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML"> <DisplayName>Check-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> <Source>PostalCode</Source> </JSONToXML>
Determine o tipo de variável especificada no elemento
<Source>
:- Localize o código no proxy de API onde a variável foi definida primeiro.
- Depois de descobrir a política na qual a variável é definida e preenchida primeiro, tem de determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo type (se estiver presente).
- Se o atributo type não estiver presente, a variável é considerada uma string.
- Se o tipo da variável for string, essa é a causa do erro. Pode saber mais sobre as variáveis comuns e os respetivos tipos na referência de variáveis.
Por exemplo, veja a variável
PostalCode
no JSON para a política XML acima.Por exemplo, considere que é usada uma política Assign Message para atribuir um valor a uma variável denominada
PostalCode
, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Tenha em atenção que o tipo de variável definido em
<AssignVariable>
é string. Assim, a variávelPostalCode
é do tipo string.Agora, recorde que a variável
PostalCode
é usada no elemento<Source>
da política JSONToXML:<Source>PostalCode</Source>
Uma vez que
PostalCode
é do tipo string e o elemento<OutputVariable>
está em falta, recebe o código de erro:steps.json2xml.OutputVariableIsNotAvailable
Resolução
Certifique-se de que, se a variável especificada no elemento <Source>
da política JSONToXML for do tipo string, o elemento <OutputVariable>
é definido na política.
Para corrigir a política JSONToXML abordada acima, inclua um elemento <OutputVariable>
, conforme mostrado abaixo.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check-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>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
Código de 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": "steps.json2xml.InCompatibleTypes"
}
}
}
Causa
Este erro ocorre se o tipo da variável definida no elemento <Source>
e no elemento <OutputVariable>
não for o mesmo. É obrigatório que o tipo das variáveis contidas no elemento <Source>
e no elemento <OutputVariable>
corresponda.
Os tipos válidos são message
e string
.
Diagnóstico
Identifique a política de JSON para XML onde ocorreu o erro. Pode encontrá-lo no elemento
faultstring
da resposta de erro. Por exemplo, no seguintefaultstring
, o nome da política éJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Na nota da política de JSON para XML com falha, tome nota dos valores especificados em
<OutputVariable>
e<Source>
.Considere a seguinte política de exemplo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML_checktype"> <DisplayName>JSONToXML_checktype</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>response</OutputVariable> <Source>PostalCode</Source> </JSONToXML>
Determine o tipo de variável especificado nos elementos
<Source>
e<OutputVariable>
:- Localize primeiro o código no proxy da API onde cada uma destas variáveis foi definida.
- Depois de descobrir a política na qual a variável é definida e preenchida primeiro, tem de determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo type (se estiver presente).
- Se o atributo type não estiver presente, a variável é considerada uma string.
- Se o tipo da variável especificada em
<Source>
for string, enquanto o tipo de<OutputVariable>
for message, ou vice-versa, essa é a causa do erro. Pode saber mais sobre as variáveis comuns e os respetivos tipos na referência de variáveis.
Por exemplo, considere uma política Assign Message que é usada para atribuir um valor a uma variável denominada
PostalCode
, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Tenha em atenção que o tipo de variável definido em
<AssignVariable>
é string. Por conseguinte, a variávelPostalCode
é do tipo string.Agora, recorde 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>
Uma vez que
PostalCode
é do tipo string, enquanto a variávelresponse
é do tipo de mensagem, são tipos incompatíveis, pelo que recebe o código de erro:steps.json2xml.InCompatibleTypes
O erro acima também pode ocorrer se a variável no elemento
<Source>
for do tipomessage
, mas a variável no elemento<OutputVariable>
for do tipo string.
Resolução
Certifique-se de que o tipo da variável definida no elemento <Source>
e no elemento <OutputVariable>
é sempre o mesmo. É obrigatório que o tipo das variáveis contidas no elemento <Source>
e no elemento <OutputVariable>
corresponda. Ou seja, certifique-se de que o tipo de <Source>
e os elementos <OutputVariable>
são ambos do tipo string ou mensagem.
Para corrigir a política JSON para XML abordada acima, pode declarar outra variável PostalCode_output
do tipo string através da política Assign Message e usar esta variável no elemento <OutputVariable>
da política JSON para XML.
Política de atribuição de mensagens modificada:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode">
<DisplayName>Assign_PostalCode</DisplayName>
<Properties/>
<AssignVariable>
<Name>PostalCode</Name>
<Value>{"value":"56008"}</Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>PostalCode_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
Política JSONToXML modificada:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>JSONToXML_checktype</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>PostalCode_output</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InvalidSourceType
Código de 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": "steps.json2xml.InvalidSourceType"
}
}
}
Causa
Este erro ocorre se o tipo da variável usada 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 de JSON para XML. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, o tipo inválido é Integer.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Examine todas as políticas de JSON para XML no proxy de API específico onde ocorreu a falha. Na política de JSON para XML com falha, anote o nome da variável especificada em
<Source>
.Segue-se um exemplo de uma política que tem a variável denominada EmployeeID especificada no elemento
<Source>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</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>EmployeeID</Source>
</JSONToXML>
Determine o tipo de variável especificado no elemento
<Source>
:- Localize o código no proxy de API onde esta variável foi definida pela primeira vez.
- Depois de descobrir a política na qual a variável é definida e preenchida primeiro, tem de determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo type (se estiver presente).
- Se o atributo type não estiver presente, a variável é considerada uma string.
- Se o tipo da variável especificada em
<Source>
não for do tipo de mensagem nem de string, essa é a causa do erro. Pode saber mais sobre as variáveis comuns e os respetivos tipos na referência de variáveis.
Por exemplo, vamos considerar que a política ExtractVariables é usada para extrair o valor de uma carga útil JSON e define o valor para a variável
EmployeeID
do tipo inteiro, conforme mostrado abaixo:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>request</Source> <JSONPayload> <Variable name="EmployeeID" type="integer"> <JSONPath>$.ID</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
Agora, recorde que a variável
EmployeeID
é usada no elemento<Source>
da política JSONToXML:<Source>EmployeeID</Source>
Uma vez que o tipo desta variável é
Integer
, que não é um tipo<Source>
válido, o proxy de API falha com o erro:steps.json2xml.InvalidSourceType
Resolução
Certifique-se de que o tipo da variável usada para especificar o elemento <Source>
é válido. Os tipos de <Source>
válidos são message
e string
.
Para evitar o erro acima com a política JSONToXML, pode usar a variável request que é do tipo message ou qualquer outra string que seja um payload JSON válido.