Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.
SourceUnavailable
Fehlercode
steps.json2xml.SourceUnavailable
Fehlerantworttext
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn für die im Element <Source>
der JSON-zu-XML-Richtlinie angegebene Variable message eine der folgenden Aussagen gilt:
- liegt außerhalb des Geltungsbereichs (nicht im spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird) oder
- kann nicht gelöst werden (ist nicht definiert)
Dieser Fehler tritt beispielsweise auf, wenn die JSON-zu-XML-Richtlinie im Anfrageablauf ausgeführt werden soll, das <Source>
-Element jedoch auf die Variable response
eingestellt ist, die im Anfrageablauf nicht vorhanden ist.
Diagnose
Ermitteln Sie die JSON-zu-XML-Richtlinie, in der der Fehler aufgetreten ist, sowie den Namen der nicht verfügbaren Variable. Sie finden beide Elemente im Element
faultstring
der Fehlerantwort. Beispiel: Im folgendenfaultstring
lautet der RichtliniennameConvert-JSONToXML
und die Variableresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
Prüfen Sie in der XML-Datei der fehlgeschlagenen JSON-zu-XML-Richtlinie, ob der Name der Variablen im
<Source>
-Element mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (Schritt 1 oben). Die folgende JSON-zu-XML-Richtlinie gibt beispielsweise eine Variable namensresponse
im Element<Source>
an, die mit dem Inhalt vonfaultstring
übereinstimmt:<?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>
Prüfen Sie, ob die im Element
<Source>
verwendete Variable definiert ist und in dem Ablauf verfügbar ist, in dem die JSON-zu-XML-Richtlinie ausgeführt wird.Wenn die Variable entweder:
- außerhalb des Geltungsbereichs (nicht im spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird) liegt oder
- nicht gelöst werden kann (ist nicht definiert),
dann ist das die Ursache für den Fehler.
Beispiel: Die oben gezeigte JSON-zu-XML-Richtlinie muss im Anfrage-Ablauf ausgeführt werden. Wie bereits erwähnt, wird die Variable
response
im Element<Source>
der JSON-zu-XML-Richtlinie verwendet. Die Antwortvariable ist nur im Antwortablauf verfügbar.Da die Variable
response
im Anfrageablauf nicht vorhanden ist, erhalten Sie den Fehlercode:steps.json2xml.SourceUnavailable
Lösung
Achten Sie darauf, dass die Variable im Element <Source>
der fehlgeschlagenen JSON-in-XML-Richtlinie definiert ist und in dem Ablauf vorhanden ist, in dem die Richtlinie ausgeführt wird.
Um die oben gezeigte Beispielrichtlinie von JSON zu XML zu korrigieren, können Sie das Element <Source>
ändern, um die Variable request
zu verwenden, da sie im Anfrageablauf vorhanden ist:
<?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
Fehlercode
steps.json2xml.ExecutionFailed
Fehlerantworttext
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Mögliche Ursachen
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung |
Fehlende Eingabe-Nutzlast | Die Nutzlast der JSON-Eingabe ist leer. |
Ungültige oder fehlerhafte Eingabe | Die an die JSON-zu-XML-Richtlinie übergebene Eingabe (JSON) ist ungültig oder fehlerhaft. |
Ursache: Fehlende Eingabe-Nutzlast
In der JSON-zu-XML-Richtlinie, wenn der Inhalt (Nutzlast) der im Element <Source>
angegebenen Variable leer ist, tritt dieser Fehler auf.
Beispiel: Wenn das Element <Source>
in der JSON-zu-XML-Richtlinie als request
- oder response
-Variable festgelegt ist und eine JSON-Nutzlast enthalten soll, die Nutzlast aber leer ist, tritt der Fehler auf.
Diagnose
Ermitteln Sie die JSON-zu-XML-Richtlinie, in der der Fehler aufgetreten ist. Sie finden diese Informationen im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
lautet der Richtlinienname beispielsweiseConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Untersuchen Sie das
<Source>
-Element in der fehlgeschlagenen JSON-zu-XML-Richtlinie und bestimmen Sie die angegebene Variable. Die folgende JSON-zu-XML-Richtlinie hat beispielsweise das<Source>
-Element aufrequest
gesetzt:<?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>
Prüfen Sie, ob die für das Element
<Source>
in der Richtlinie angegebene Variable leer ist. Wenn sie leer ist, ist dies die Ursache des Fehlers.In der oben gezeigten Beispielrichtlinie von JSON zu XML ist die vom Client gesendete Anfragenutzlast leer, d. h. der Anfragetext.
Beispiel:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
Dabei ist your_host_alias eine öffentlich zugängliche Domain, die für den Zugriff auf Ihre APIs verwendet wird, wie im Attribut
virtualhosts.hostAliases
in Ihrer Überschreibungsdatei konfiguriert. Siehe Konfigurationsüberschreibungen angeben.Da die Nutzlast der JSON-Antwort leer ist, erhalten Sie den Fehlercode:
steps.json2xml.ExecutionFailed
Dieser Fehler kann auch auftreten, wenn das
<Source>
-Element auf „Antwort“ gesetzt ist, aber eine leere Nutzlast vom Backend-Server übergeben wird.
Lösung
Achten Sie darauf, dass die Eingabe, die im Element <Source>
an die JSON-zu-XML-Richtlinie übergeben wird, eine gültige JSON-Nutzlast ist.
Übergeben Sie eine gültige JSON-Nutzlast, um das Problem mit der Beispiel-JSON-zu-XML-Richtlinie zu beheben. Beispiel:
Erstellen Sie eine Datei mit dem Namen
city.json
und folgendem Inhalt:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Führen Sie den API-Aufruf mit einem curl-Befehl so aus:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Dabei ist your_host_alias eine öffentlich zugängliche Domain, die für den Zugriff auf Ihre APIs verwendet wird, wie im Attribut
virtualhosts.hostAliases
in Ihrer Überschreibungsdatei konfiguriert. Siehe Konfigurationsüberschreibungen festlegen.
Ursache: Ungültige oder fehlerhafte Eingabe
Wenn die JSON-zu-XML-Richtlinie die Eingabe ungültig oder fehlerhaft formatiert, wird dieser Fehler ausgegeben.
Die folgende ungültige JSON-Datei wird beispielsweise als Eingabe für die JSON-zu-XML-Richtlinie bereitgestellt.
[
"args": ["name" : "Google" ]
]
dann erhalten Sie diese Fehlermeldung:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnose
Ermitteln Sie die JSON-zu-XML-Richtlinie, in der der Fehler aufgetreten ist. Sie finden diese Informationen im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
lautet der Richtlinienname beispielsweiseConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Prüfen Sie das
<Source>
-Element, das in der fehlgeschlagenen JSON-Datei im XML-Format angegeben ist. Die folgende JSON-zu-XML-Richtlinie hat beispielsweise das Element<Source>
auf die Variablerequest
festgelegt:<?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>
Prüft, ob die im Element
<Source>
angegebene Eingabe eine gültige JSON-Nutzlast ist. Wenn die Eingabe ungültig oder fehlerhaft ist, ist dies die Ursache des Fehlers.Es wird davon ausgegangen, dass die folgende ungültige JSON-Datei an die Richtlinie übergeben wurde
[ "args": ["name" : "Google" ] ]
Hier ist der Beispiel-API-Aufruf, der zeigt, wie die Anfrage übergeben wurde:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Dabei ist your_host_alias eine öffentlich zugängliche Domain, die für den Zugriff auf Ihre APIs verwendet wird, wie im Attribut
virtualhosts.hostAliases
in Ihrer Überschreibungsdatei konfiguriert. Siehe Konfigurationsüberschreibungen angeben.Die in der Anfrage übergebene JSON-Nutzlast ist ungültig, da das JSON-Objekt mit eckigen Klammern ([ ]) beginnt und endet. Aus diesem Grund erhalten Sie den Fehlercode:
steps.json2xml.ExecutionFailed
Dieser Fehler kann auch auftreten, wenn das
<Source>
-Element auf "Antwort" gesetzt wurde, die Nutzlast der JSON-Antwort aber ungültig oder fehlerhaft ist.
Lösung
Achten Sie darauf, dass die Eingabe im Element <Source>
an die JSON-zu-XML-Richtlinie gültig und nicht fehlerhaft ist.
Um das Problem mit der oben erwähnten Beispiel-JSON-zu-XML-Richtlinie zu beheben, übergeben Sie eine gültige JSON-Nutzlastanfrage so:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Fehlercode
steps.json2xml.OutputVariableIsNotAvailable
Fehlerantworttext
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die im <Source>
-Element der JSON-zu-XML-Richtlinie angegebene Variable den Typ "String" hat und das Element <OutputVariable>
nicht definiert ist. Das Element <OutputVariable>
ist obligatorisch, wenn die im Element <Source>
definierte Variable vom Typ "String" ist.
Diagnose
Ermitteln Sie die JSON-zu-XML-Richtlinie, in der der Fehler aufgetreten ist. Dies finden Sie im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
lautet der Richtlinienname beispielsweiseCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
In der fehlgeschlagenen JSON-zu-XML-Richtlinie prüft die Richtlinie, ob
<OutputVariable>
fehlt.In der folgenden JSON-zu-XML-Beispielrichtlinie fehlt ein
<OutputVariable>
-Element:<?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>
Ermitteln Sie den im
<Source>
-Element angegebenen Variablentyp:- Suchen Sie den Code im API-Proxy, in dem die Variable zuerst definiert wurde.
- Nachdem Sie die Richtlinie ermittelt haben, in der die Variable zuerst definiert und ausgefüllt wird, müssen Sie den Typ dieser Variable so bestimmen:
- Prüfen Sie den Wert des Typattributs (falls vorhanden).
- Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
- Wenn der Typ der Variablen "String" ist, ist dies die Ursache des Fehlers. Weitere Informationen zu gängigen Variablen und ihren Typen finden Sie in der Variablenreferenz.
Betrachten Sie beispielsweise die Variable
PostalCode
in der obigen JSON-zu-XML-Richtlinie.Beispiel: Die Richtlinie "Nachricht zuweisen" wird verwendet, um einer Variablen mit einem Namen namens
PostalCode
einen Wert zuzuweisen:<?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>
Der in
<AssignVariable>
festgelegte Variablentyp ist String. Die VariablePostalCode
ist also vom Typ String.Denken Sie daran, dass die Variable
PostalCode
im Element<Source>
der JSON-zu-XML-Richtlinie verwendet wird:<Source>PostalCode</Source>
Da
PostalCode
ein String-Typ ist und das<OutputVariable>
-Element fehlt, erhalten Sie den Fehlercode:steps.json2xml.OutputVariableIsNotAvailable
Lösung
Prüfen Sie, ob die im Element <Source>
der JSON-zu-XML-Richtlinie angegebene Variable vom Typ "String" ist, dann ist das Element <OutputVariable>
in der Richtlinie definiert.
Um die oben genannte JSON-zu-XML-Richtlinie zu korrigieren, fügen Sie wie unten dargestellt ein <OutputVariable>
-Element ein.
<?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
Fehlercode
steps.json2xml.InCompatibleTypes
Fehlerantworttext
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn der Typ der im Element <Source>
definierten Variable und das Element <OutputVariable>
nicht identisch sind. Der Typ der im Element <Source>
enthaltenen Variablen muss mit dem Typ der im Element <OutputVariable>
enthaltenden Variable übereinstimmen.
Gültige Typen sind message
und string
.
Diagnose
Ermitteln Sie die JSON-zu-XML-Richtlinie, in der der Fehler aufgetreten ist. Dies finden Sie im Element
faultstring
der Fehlerantwort. Im folgendenfaultstring
lautet der Richtlinienname beispielsweiseJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Notieren Sie sich in der fehlgeschlagenen JSON-zu-XML-Richtlinie die in
<OutputVariable>
und<Source>
angegebenen Werte.Sehen Sie sich die folgende Beispielrichtlinie an:
<?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>
Legen Sie den Variablentyp fest, der in den Elementen
<Source>
und<OutputVariable>
angegeben ist:- Suchen Sie den Code im API-Proxy, in dem jede dieser Variablen zuerst definiert wurde.
- Nachdem Sie die Richtlinie ermittelt haben, in der die Variable zuerst definiert und ausgefüllt wird, müssen Sie den Typ dieser Variable so bestimmen:
- Prüfen Sie den Wert des Typattributs (falls vorhanden).
- Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
- Wenn der Typ der in
<Source>
angegebenen Variablen ein String ist, während der Typ<OutputVariable>
"message" (und umgekehrt) ist, ist das die Ursache des Fehlers. Weitere Informationen zu gängigen Variablen und ihren Typen finden Sie in der Variablenreferenz.
Als Beispiel können Sie die Richtlinie "Nachricht zuweisen" verwenden, um einer Variable namens
PostalCode
einen Wert zuzuweisen:<?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>
Der in
<AssignVariable>
festgelegte Variablentyp ist String. Daher ist die VariablePostalCode
ein Typstring.Denken Sie daran, dass die Variable
PostalCode
im Element<Source>
der JSON-zu-XML-Richtlinie verwendet wird:<Source>PostalCode</Source>
Denken Sie auch daran, dass die Variable
response
im Element<OutputVariable>
der JSON-zu-XML-Richtlinie verwendet wird:<OutputVariable>response</OutputVariable>
Da
PostalCode
einen String-Typ hat, während die Variableresponse
vom Nachrichtentyp ist, sind sie nicht kompatibel. Sie erhalten daher den Fehlercode:steps.json2xml.InCompatibleTypes
Der obige Fehler kann auch auftreten, wenn die Variable im
<Source>
-Element vom Typmessage
ist, die Variable im<OutputVariable>
-Element jedoch vom Typ String ist.
Lösung
Achten Sie darauf, dass die Art der Variablen, die im Element <Source>
und im Element <OutputVariable>
definiert sind, immer gleich ist. Der Typ der im Element <Source>
enthaltenen Variablen muss mit dem Typ der im Element <OutputVariable>
enthaltenden Variable übereinstimmen. Das bedeutet, dass der Typ von <Source>
und den <OutputVariable>
-Elementen sowohl String- als auch Nachrichtentyp sind.
Um die oben erläuterte JSON-zu-XML-Richtlinie zu korrigieren, können Sie mithilfe der Richtlinie zum Zuweisen von Nachrichten eine weitere Variable PostalCode_output
des Typs "String" deklarieren und diese Variable im Element <OutputVariable>
der JSON- oder XML-Richtlinie verwenden.
Geänderte Richtlinie "Nachricht zuweisen":
<?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>
Geänderte JSON-zu-XML-Richtlinie:
<?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
Fehlercode
steps.json2xml.InvalidSourceType
Fehlerantworttext
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Beispiel für Fehlermeldung
{
"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"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn der Variablentyp, der zum Definieren des <Source>
-Elements verwendet wird, ungültig ist. Die gültigen Variablentypen sind message
und string
.
Diagnose
Ermitteln Sie den ungültigen Quelltyp, der in der JSON-zu-XML-Richtlinie verwendet wird. Diese Informationen finden Sie in der Fehlermeldung. Im folgenden Fehler ist der ungültige Typ beispielsweise "Integer" (Ganzzahl).
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Prüfen Sie alle JSON-zu-XML-Richtlinien in dem spezifischen API-Proxy, in dem der Fehler aufgetreten ist. Notieren Sie sich in der fehlgeschlagenen JSON-zu-XML-Richtlinie den Namen der in
<Source>
angegebenen Variablen.Hier sehen Sie eine Beispielrichtlinie, in der die Variable EmployeeID im Element
<Source>
angegeben ist:
<?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>
Ermitteln Sie den im
<Source>
-Element angegebenen Variablentyp:- Suchen Sie den Code im API-Proxy, in dem diese Variable zuerst definiert wurde.
- Nachdem Sie die Richtlinie ermittelt haben, in der die Variable zuerst definiert und ausgefüllt wird, müssen Sie den Typ dieser Variable so bestimmen:
- Prüfen Sie den Wert des Typattributs (falls vorhanden).
- Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
- Wenn der Typ der in
<Source>
angegebenen Variable weder der Typ "Nachricht" noch "String" ist, ist dies die Ursache des Fehlers. Weitere Informationen zu gängigen Variablen und ihren Typen finden Sie in der Variablenreferenz.
Als Beispiel nehmen wir an, dass die Richtlinie "ExtractVariables" verwendet wird, um den Wert aus einer JSON-Nutzlast zu extrahieren, und setzt den Wert wie unten dargestellt auf die Variable
EmployeeID
des Ganzzahltyps:<?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>
Denken Sie daran, dass die Variable
EmployeeID
im Element<Source>
der JSON-zu-XML-Richtlinie verwendet wird:<Source>EmployeeID</Source>
Da der Typ dieser Variable
Integer
ist, aber kein gültiger<Source>
-Typ ist, schlägt der API-Proxy mit folgendem Fehler fehl:steps.json2xml.InvalidSourceType
Lösung
Prüfen Sie, ob der Typ der Variablen, die zur Angabe des Elements <Source>
verwendet wird, gültig ist. Gültige <Source>
-Typen sind message
und string
.
Zur Vermeidung des obigen Fehlers in Bezug auf die JSON-zu-XML-Richtlinie können Sie die Anfragevariable vom Typ "Nachricht" oder einen anderen String verwenden, der eine gültige JSON-Nutzlast ist.