Laufzeitfehler bei der XML-zu-JSON-Richtlinie beheben

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

SourceUnavailable

Fehlercode

steps.xml2json.SourceUnavailable

Fehlerantworttext

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

Beispiel für Fehlermeldung

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn die im Element <Source> der XML-zu-JSON-Richtlinie angegebene Variable Nachricht entweder:

  • außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
  • nicht aufgelöst werden kann (nicht definiert ist)

Dieser Fehler tritt beispielsweise auf, wenn die XML-zu-JSON-Richtlinie im Anfrageablauf ausgeführt werden soll, das <Source>-Element jedoch auf die Variable response gesetzt ist, die im Anfrageablauf nicht vorhanden ist.

Diagnose

  1. Ermitteln Sie die XML-zu-JSON-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 folgenden faultstring lautet der Richtlinienname Convert-XMLToJSON und die Variable response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. Überprüfen Sie in der XML-Datei der XML-zu-JSON-Richtlinie, ob der Name der im Element <Source> festgelegten Variable mit dem Variablennamen übereinstimmt, der im Fehlerstring angegeben ist (Schritt 1 oben). Beispiel: Die folgende XML-zu-JSON-Richtlinie gibt eine Variable namens response im Element <Source> an, die dem Inhalt von faultstring entspricht:

    <?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>
    
  3. Prüfen Sie, ob die im Element <Source> verwendete Variable definiert und in dem Ablauf verfügbar ist, in dem die XML-zu-JSON-Richtlinie ausgeführt wird.

  4. Wenn die Variable entweder:

    • außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
    • nicht aufgelöst werden kann (nicht definiert ist)

    dann ist das die Ursache für den Fehler.

    Beispiel: Die oben gezeigte XML-zu-JSON-Richtlinie muss im Anfrage-Ablauf ausgeführt werden. Denken Sie daran, dass die Variable response im Element <Source> der XML-zu-JSON-Richtlinie verwendet wird: Die Antwortvariable ist nur im Antwortablauf verfügbar.

    Da die Antwortvariable im Anfrageablauf nicht vorhanden ist, erhalten Sie den Fehlercode:

    steps.xml2json.SourceUnavailable
    

Lösung

Achten Sie darauf, dass die im Element <Source> der fehlgeschlagenen XML-zu-JSON-Richtlinie definierte Variable definiert und in dem Ablauf vorhanden ist, in dem die Richtlinie ausgeführt wird.

Um die oben gezeigte XML-zu-JSON-Beispielrichtlinie zu korrigieren, können Sie das Element <Source> so ändern, dass die Variable request im Anfrageablauf verwendet wird:

<?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

Fehlercode

steps.xml2json.ExecutionFailed

Fehlerantworttext

{
    "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"
        }
    }
}

Mögliche Ursachen

Mögliche Ursachen für diesen Fehler:

Ursache Beschreibung
Fehlende Eingabe-Nutzlast Die Eingabe-Nutzlast (XML) ist leer.
Ungültige oder fehlerhafte Eingabe Die an die "XML-to-JSON"-Richtlinie übergebene Eingabe (XML) ist ungültig oder fehlerhaft.

Ursache: Fehlende Eingabe-Nutzlast

In der XML-zu-JSON-Richtlinie, wenn der Inhalt (Nutzlast) der Variablen im Element <Source> leer ist, tritt dieser Fehler auf.

Wenn beispielsweise das Element <Source> in der XML-zu-JSON-Richtlinie als request- oder response-Variable festgelegt wird und eine XML-Nutzlast enthalten soll, tritt dieser Fehler auf, wenn die Nutzlast leer ist.

Diagnose

  1. Ermitteln Sie die XML-zu-JSON-Richtlinie, in der der Fehler aufgetreten ist. Sie finden diese Informationen im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der Richtlinienname beispielsweise Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. Untersuchen Sie das Element <Source> in der XML-Datei der fehlgeschlagenen XML-zu-JSON-Richtlinie XML-Objekt und ermitteln Sie die angegebene Variable. In der folgenden XML-zu-JSON-Richtlinie wurde beispielsweise ein <Source>-Element für die Anfrage festgelegt:

    <?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>
    
  3. Prüfen Sie, ob die für das Element <Source> in der XML-zu-JSON-Richtlinie angegebene Variable leer ist. Wenn sie leer ist, ist dies die Ursache des Fehlers.

    Im oben gezeigten Beispiel einer XML-zu-JSON-Richtlinie war die vom Client gesendete Anfrage-Nutzlast (d. h. der Anfragetext) leer.

    Beispiel:

    curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml"
    

    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.

    Da die Anfrage-Nutzlast der XML leer ist, erhalten Sie den Fehlercode:

    steps.xml2json.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 über das Element <Source> an die XML-zu-JSON-Richtlinie übergeben wird, eine gültige XML-Nutzlast ist und nicht leer ist.

Übergeben Sie eine gültige XML-Nutzlast, um das Problem mit der XML-zu-JSON-Beispielrichtlinie zu beheben. Beispiel:

  1. Erstellen Sie eine Datei mit dem Namen „city.xml“ und folgendem Inhalt:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. Führen Sie folgenden API-Aufruf mit einem curl-Befehl aus:

    curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

    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 XML-zu-JSON-Richtlinie eine Eingabe parst, die ungültig oder fehlerhaft ist, wird dieser Fehler angezeigt.

Beispiel: Die folgende ungültige XML-Datei wird als Eingabe für die XML-to-JSON-Richtlinie bereitgestellt,

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

dann erhalten Sie diese Fehlermeldung:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

Diagnose

  1. Ermitteln Sie die XML-zu-JSON-Richtlinie, in der der Fehler aufgetreten ist. Sie finden diese Informationen im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der Richtlinienname beispielsweise Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. Prüfen Sie das <Source>-Element, das in der XML-Datei der fehlgeschlagenen XML-zu-JSON-Richtlinie angegeben ist. In der folgenden XML-zu-JSON-Richtlinie ist beispielsweise das <Source>-Element auf die Variable request festgelegt:

    <?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>
    
  3. Überprüfen Sie, ob die im Element <Source> für die XML-zu-JSON-Richtlinie angegebene Eingabe eine gültige XML-Nutzlast ist. Wenn die Eingabe ungültig oder fehlerhaft ist, ist dies die Ursache des Fehlers.

    In der oben gezeigten Beispielrichtlinie für XML-zu-JSON wurde die folgende ungültige XML-Datei über die Datei city.xml an die Richtlinie "Variablen extrahieren" übergeben:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    Hier ist der Beispiel-API-Aufruf, der zeigt, wie die Anfrage übergeben wurde:

    curl -v "http://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    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.

    Die an die API übergebene XML-Nutzlast ist ungültig, da die XML-Datei kein End-Tag für das <root>-Element enthält. Sie erhalten deshalb den Fehlercode:

    steps.xml2json.ExecutionFailed
    

    Dieser Fehler kann auch auftreten, wenn das Element <Source> auf „Antwort“ gesetzt wurde, die Nutzlast der XML-Antwort vom Back-End-Server jedoch ungültig oder fehlerhaft ist.

Lösung

Achten Sie darauf, dass die Eingabe, die über das Element <Source> an eine XML-zu-JSON-Richtlinie übergeben wird, gültig und nicht fehlerhaft ist.

Übergeben Sie eine gültige XML-Nutzlastanfrage, um das Problem mit der oben beschriebenen Beispielrichtlinie für XML-zu-JSON zu beheben:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

OutputVariableIsNotAvailable

Fehlercode

steps.xml2json.OutputVariableIsNotAvailable

Fehlerantworttext

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Beispiel für Fehlermeldung

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn die im <Source>-Element der XML-to-JSON-Richtlinie angegebene Variable den Typ "String" aufweist und das Element <OutputVariable> nicht definiert ist. Das Element <OutputVariable> ist obligatorisch, wenn die im Element <Source> definierte Variable vom Typ string" ist.

Diagnose

  1. Ermitteln Sie die XML-to-JSON-Richtlinie, in der der Fehler aufgetreten ist. Dies finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der Richtlinienname beispielsweise Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. Prüfen Sie in der fehlgeschlagenen XML-to-JSON-Richtlinie, ob <OutputVariable> fehlt.

    Hier ist ein Beispiel für eine XML-zu-JSON-Richtlinie, bei der das Element <OutputVariable> fehlt:

    <?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>
    
    
  3. Ermitteln Sie den im <Source>-Element angegebenen Variablentyp:

    1. Suchen Sie den Code innerhalb des API-Proxy-Bundles, wo die Variable zuerst definiert wurde.
    2. 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:
      1. Prüfen Sie den Wert des Typattributs (falls vorhanden).
      2. Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
    3. Wenn der Typ der Variable 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 „TrackingNumber“ in der obigen XML-zu-JSON-Richtlinie. Sie ist vom Typ „String“. Betrachten Sie nun eine Richtlinie „Nachricht zuweisen“, die verwendet wird, um den Wert einer Variablen namens TrackingNumber so festzulegen:

    <?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>
    

    Der in <AssignVariable> festgelegte Variablentyp ist String. Die Variable TrackingNumber ist also vom Typ String.

    Denken Sie nun daran, dass die Variable TrackingNumber im Element <Source> der XML-zu-JSON-Richtlinie verwendet wird:

    <Source>TrackingNumber</Source>
    

    Da TrackingNumber vom Typ „String“ ist und <OutputVariable> in der Richtlinie fehlt, erhalten Sie den Fehlercode:

    steps.xml2json.OutputVariableIsNotAvailable
    

Lösung

Wenn die im Element <Source> der XML-zu-JSON-Richtlinie angegebene Variable den Typ "String" hat, ist in diesem Fall das Element <OutputVariable> obligatorisch.

Um die oben erläuterte XML-to-JSON-Richtlinie zu korrigieren, fügen Sie wie unten gezeigt das Element <OutputVariable> hinzu.

<?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

Fehlercode

steps.xml2json.InCompatibleTypes

Fehlerantworttext

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

Beispiel für Fehlermeldung

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.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.

The valid types are message and string.

Diagnose

  1. Ermitteln Sie die XML-to-JSON-Richtlinie, in der der Fehler aufgetreten ist. Dies finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der Richtlinienname beispielsweise XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. Notieren Sie sich in der fehlgeschlagenen XML-to-JSON-Richtlinie die in <OutputVariable> angegebenen Werte.

    Hier ist ein Beispiel für eine XML-zu-JSON-Richtlinie, bei der das Element <OutputVariable> fehlt:

    <?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>
    
  3. Legen Sie den Variablentyp fest, der in den Elementen <Source> und <OutputVariable> angegeben ist:

    1. Suchen Sie den Code im API-Proxy-Bundle, wo jede dieser Variablen zuerst definiert wurde.
    2. 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:
      1. Prüfen Sie den Wert des Typattributs (falls vorhanden).
      2. Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
    3. Wenn der Typ der in <Source> angegebenen Variable string und der Typ von <OutputVariable> „Nachricht“ ist (oder umgekehrt), ist dies 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 einen Wert auf eine Variable namens TrackingNumber festzulegen. Beispiel:

    <?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>
    

    Der in <AssignVariable> festgelegte Variablentyp ist String. Die Variable TrackingNumber ist also vom Typ String.

    Denken Sie nun daran, dass die Variable TrackingNumber im Element <Source> der XML-zu-JSON-Richtlinie verwendet wird:

    <Source>TrackingNumber</Source>
    

    Denken Sie außerdem daran, dass die Variable request im Element <OutputVariable> der XML-zu-JSON-Richtlinie verwendet wird:

    <OutputVariable>request</OutputVariable>
    

    Da TrackingNumber vom Typ string ist, während die Variable response vom Typ message ist, erhalten Sie den folgenden Fehlercode, da diese Typen inkompatibel sind:

    steps.xml2json.InCompatibleTypes
    

    Der obige Fehler kann auch auftreten, wenn die Variable im <Source>-Element vom Typ message 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.

Um die oben beschriebene XML-zu-JSON-Richtlinie zu korrigieren, können Sie eine weitere Variable TrackingNumber_output vom Typ string mit der Richtlinie „Nachricht zuweisen“ angeben und diese Variable im Element <OutputVariable> der XML-zu-JSON-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_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>

Geänderte XML-zu-JSON-Richtlinie:

  <?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

Fehlercode

steps.xml2json.InvalidSourceType

Fehlerantworttext

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

Beispiel für Fehlermeldung

{
    "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"
        }
    }
}

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

  1. Ermitteln Sie den ungültigen Quelltyp, der in der XML-zu-JSON-Richtlinie verwendet wird. Diese Information finden Sie in der Fehlermeldung. Im folgenden Fehler ist der ungültige Typ beispielsweise „Ganzzahl“.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Untersuchen Sie alle „XML-to-JSON“-Richtlinien in dem API-Proxy, in dem der Fehler aufgetreten ist. Notieren Sie sich in der fehlgeschlagenen „XML-to-JSON“-Richtlinie den Namen der in <Source> angegebenen Variable.

    <?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>
    
  3. Ermitteln Sie den im <Source>-Element angegebenen Variablentyp:

    1. Suchen Sie den Code innerhalb des API-Proxy-Bundles, wo die Variable zuerst definiert wurde.
    2. 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:
      1. Prüfen Sie den Wert des Typattributs (falls vorhanden).
      2. Wenn das Typattribut nicht vorhanden ist, wird die Variable als String betrachtet.
    3. Wenn der Typ der in <Source> angegebenen Variable weder der Typ "message" noch "string" ist, ist dies die Ursache des Fehlers. Weitere Informationen zu gängigen Variablen und ihren Typen finden Sie in der Variablenreferenz.

    Betrachten Sie als Beispiel eine ExtractVariables-Richtlinie, mit der der Wert aus einer XML-Nutzlast extrahiert wird. Anschließend wird der Wert auf die Variable BookCode als integer-Typ festgelegt, wie unten dargestellt:

    <?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>
    

    Denken Sie nun daran, dass die Variable BookCode im Element <Source> der XML-zu-JSON-Richtlinie verwendet wird:

    <Source>BookCode</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.xml2json.InvalidSourceType
    

Lösung

Prüfen Sie, ob der Typ der Variable, die zur Angabe des Elements <Source> verwendet wird, gültig ist. Gültige <Source>-Typen sind message und string.

Um den oben genannten Fehler in der XML-zu-JSON-Richtlinie zu vermeiden, können Sie die Variable request vom Typ message oder einen anderen String verwenden, der eine gültige XML-Nutzlast ist.