Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
SourceUnavailable
Código de erro
steps.xml2json.SourceUnavailable
Corpo da resposta de erro
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
Causa
- Fora do âmbito (não disponível no fluxo específico em que 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 XML para JSON 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 XML para JSON onde ocorreu o erro e o nome da variável que não está disponível. Pode encontrar ambos os itens no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éConvert-XMLToJSONe a variável éresponse:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"No XML da política de XML para JSON 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 XML para JSON especifica uma variável denominadaresponseno elemento<Source>, que corresponde ao que está emfaultstring:<?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>Determine se a variável usada no elemento
<Source>está definida e disponível no fluxo no qual a política de XML para JSON está a ser executada.Se a variável for:
- Fora do âmbito (não disponível no fluxo específico em que 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 XML para JSON 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 XML para JSON. A variável de resposta só está disponível no fluxo de resposta.Uma vez que a variável de resposta não existe no fluxo de pedidos, recebe o código de erro:
steps.xml2json.SourceUnavailable
Resolução
Certifique-se de que a variável definida no elemento <Source> da política XML para JSON com falha está definida e existe no fluxo onde a política é executada.
Para corrigir o exemplo de política de XML para JSON apresentado acima, pode modificar o elemento <Source> para usar a variável request, tal como existe no fluxo de pedidos:
<?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
Código de erro
steps.xml2json.ExecutionFailed
Corpo da resposta de erro
{ "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" } } }
Causas possíveis
As possíveis causas deste erro são:
| Causa | Descrição |
| Payload de entrada em falta | O payload de entrada (XML) está vazio. |
| Entrada inválida ou com formato incorreto | A entrada (XML) transmitida para a política de XML para JSON é inválida ou tem um formato incorreto. |
Causa: payload de entrada em falta
Na política de XML para JSON, 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 XML para JSON estiver definido como uma variável request ou response e se destinar a conter um payload XML, este erro ocorre se o payload estiver vazio.
Diagnóstico
Identifique a política de XML para JSON onde ocorreu o erro. Pode encontrar estas informações no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"Examine o elemento
<Source>no XML da política de XML para JSON com falhas e determine a variável especificada. Por exemplo, a seguinte política de XML para JSON tem o elemento<Source>definido como pedido:<?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>Verifique se a variável especificada para o elemento
<Source>na política XMLToJSON está vazia. Se estiver vazio, é esse o motivo do erro.No exemplo de política de XML para JSON apresentado acima, o payload do pedido (ou seja, o corpo do pedido) enviado pelo cliente estava vazio.
Por exemplo:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml"
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliasesno ficheiro de substituições. Consulte Especifique substituições de configuração.Uma vez que a carga útil do pedido XML está vazia, recebe o código de erro:
steps.xml2json.ExecutionFailedEste 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 de XML para JSON através do elemento <Source> é uma carga útil XML válida e não está vazia.
Para corrigir o problema com a política de XML para JSON de exemplo, transmita um payload XML válido. Por exemplo:
Crie um ficheiro denominado city.xml com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>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/xml" -X POST -d @company.xml
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliasesno ficheiro de substituições. Consulte Especifique substituições de configuração.
Causa: entrada inválida ou com formato incorreto
Se a política de XML para JSON analisar uma entrada inválida ou com formato incorreto, recebe este erro.
Por exemplo, se o seguinte XML inválido for fornecido como entrada para a política XML para JSON:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
recebe o erro:
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
Diagnóstico
Identifique a política de XML para JSON onde ocorreu o erro. Pode encontrar estas informações no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"Examine o elemento
<Source>especificado no XML da política XML para JSON com falhas. Por exemplo, a seguinte política de XML para JSON tem o elemento<Source>definido para a variávelrequest:<?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>Valide se a entrada especificada no elemento
<Source>para a política XML para JSON é uma carga útil XML válida. Se a entrada for inválida ou tiver um formato incorreto, essa é a causa do erro.No exemplo de política de XML para JSON apresentado acima, o seguinte XML inválido foi transmitido à política Extract Variables através do ficheiro
city.xml:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>Segue-se o exemplo de chamada da API que mostra como o pedido foi transmitido:
curl -v "http://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliasesno ficheiro de substituições. Consulte Especifique substituições de configuração.A carga útil XML transmitida à API é inválida, uma vez que o XML não tem uma etiqueta final para o elemento
<root>. Assim, recebe o código de erro:steps.xml2json.ExecutionFailedEste erro também pode ocorrer se o elemento
<Source>estiver definido como resposta, mas a carga útil da resposta XML do servidor de back-end for inválida ou tiver um formato incorreto.
Resolução
Certifique-se de que a entrada transmitida à política de XML para JSON através do elemento <Source> é válida e não tem um formato incorreto.
Para corrigir o problema com a política de XML para JSON de exemplo abordada acima, transmita um pedido de payload XML válido da seguinte forma:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNotAvailable
Código de erro
steps.xml2json.OutputVariableIsNotAvailable
Corpo da resposta de erro
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
Causa
Este erro ocorre se a variável especificada no elemento <Source> da política de XML para JSON 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 XML para JSON onde ocorreu o erro. Pode encontrá-lo no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éConvert-XMLToJSON:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."No XML com falhas, valide se o elemento
<OutputVariable>está em falta.Segue-se um exemplo de uma política de XML para JSON que tem o elemento
<OutputVariable>em falta.<?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>Determine o tipo de variável especificado no elemento
<Source>:- Localize o código no pacote do proxy de API, onde a 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 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 TrackingNumber na política de XML para JSON acima. É do tipo string. Agora, considere uma política de atribuição de mensagens que é usada para definir o valor de uma variável denominada
TrackingNumber, conforme mostrado abaixo:<?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>Tenha em atenção que o tipo de variável definido através de
<AssignVariable>é string. Assim, a variávelTrackingNumberé do tipo string.Agora, recorde que a variável
TrackingNumberé usada no elemento<Source>da política XML para JSON:<Source>TrackingNumber</Source>Uma vez que
TrackingNumberé do tipo string e<OutputVariable>está em falta na política, recebe o código de erro:steps.xml2json.OutputVariableIsNotAvailable
Resolução
Certifique-se de que, se a variável especificada no elemento <Source> da política XMLToJSON for do tipo string, o elemento <OutputVariable> é obrigatório neste caso.
Para corrigir a política de XML para JSON abordada acima, inclua o elemento <OutputVariable>, conforme mostrado abaixo.
<?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
Código de erro
steps.xml2json.InCompatibleTypes
Corpo da resposta de erro
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.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.
The valid types are message and string.
Diagnóstico
Identifique a política de XML para JSON onde ocorreu o erro. Pode encontrá-lo no elemento
faultstringda resposta de erro. Por exemplo, no seguintefaultstring, o nome da política éXMLToJSON_CheckType:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."Na nota da política de XML para JSON com falha, tome nota dos valores especificados em
<OutputVariable>.Segue-se um exemplo de uma política XMLToJSON que tem o elemento
<OutputVariable>em falta<?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>Determine o tipo de variável especificado nos elementos
<Source>e<OutputVariable>:- Localize o código no pacote do proxy da API, onde cada uma destas variáveis 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 especificada em
<Source>forstringenquanto 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 definir um valor para uma variável denominada
TrackingNumber, conforme mostrado abaixo:<?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>Tenha em atenção que o tipo de variável definido através de
<AssignVariable>é string. Assim, a variávelTrackingNumberé do tipo string.Agora, recorde que a variável
TrackingNumberé usada no elemento<Source>da política XMLToJSON:<Source>TrackingNumber</Source>Da mesma forma, recorde que a variável
requesté usada no elemento<OutputVariable>da política de XML para JSON:<OutputVariable>request</OutputVariable>Uma vez que
TrackingNumberé do tipostring, enquanto a variávelresponseé do tipomessage, são tipos incompatíveis, pelo que recebe o código de erro:steps.xml2json.InCompatibleTypesO 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.
Para corrigir a política XML para JSON abordada acima, pode declarar outra variável TrackingNumber_output do tipo string através da política Assign Message e usar esta variável no elemento <OutputVariable> da política XML para JSON.
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_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>
Política XMLToJSON modificada:
<?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
Código de erro
steps.xml2json.InvalidSourceType
Corpo da resposta de erro
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
Exemplo de mensagem de erro
{
"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
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 XML para JSON. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, o tipo inválido é o número inteiro.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."Examine todas as políticas de XML para JSON no proxy de API específico onde ocorreu a falha. Na nota da política de XML para JSON com falha, tome nota do nome da variável especificada em
<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>Determine o tipo de variável especificada no elemento
<Source>:- Localize o código no pacote do 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 tipomessagenemstring, 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 ExtractVariables que é usada para extrair o valor de um payload XML e define o valor da variável
BookCodecomo sendo do tipointeger, conforme mostrado abaixo:<?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>Agora, recorde que a variável
BookCodeé usada no elemento<Source>da política XML para JSON:<Source>BookCode</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.xml2json.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 XML para JSON, pode usar a variável request, que é do tipo message, ou qualquer outra string que seja um payload XML válido.