Pemecahan masalah error runtime kebijakan XML ke JSON

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

SourceUnavailable

Kode error

steps.xml2json.SourceUnavailable

Isi respons error

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

Contoh Pesan Error

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

Penyebab

Error ini terjadi jika variabel string atau message yang ditentukan dalam elemen <Source> kebijakan XML ke JSON adalah:

  • di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan) atau
  • tidak dapat diselesaikan (tidak ditentukan)

Misalnya, error ini terjadi jika kebijakan XML ke JSON seharusnya dieksekusi dalam alur permintaan, tetapi elemen <Source> disetel ke variabel response, yang tidak ada dalam alur permintaan.

Diagnosis

  1. Identifikasi kebijakan XML ke JSON tempat error terjadi dan nama variabel yang tidak tersedia. Anda dapat menemukan kedua item ini di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah Convert-XMLToJSON dan variabelnya adalah response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. Dalam XML kebijakan XML ke JSON yang gagal, pastikan nama variabel yang ditetapkan di elemen <Source> cocok dengan nama variabel yang diidentifikasi dalam string error (langkah #1 di atas). Misalnya, kebijakan XML ke JSON berikut menentukan variabel bernama response dalam elemen <Source>, yang cocok dengan yang ada di faultstring:

    <?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. Tentukan apakah variabel yang digunakan dalam elemen <Source> ditentukan dan tersedia dalam alur tempat kebijakan XML ke JSON dijalankan.

  4. Jika variabel adalah:

    • di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan) atau
    • tidak dapat diselesaikan (tidak ditentukan)

    maka itulah penyebab error.

    Sebagai contoh, katakanlah kebijakan XML ke JSON yang ditampilkan di atas seharusnya dieksekusi dalam alur request. Ingat kembali bahwa variabel response digunakan dalam elemen <Source> dari kebijakan XML ke JSON. Variabel respons hanya tersedia dalam alur respons.

    Karena variabel respons tidak ada dalam alur permintaan, Anda akan menerima kode error:

    steps.xml2json.SourceUnavailable
    

Resolusi

Pastikan variabel yang ditetapkan di elemen <Source> dari kebijakan XML ke JSON yang gagal, ditentukan dan ada dalam alur tempat kebijakan dijalankan.

Untuk memperbaiki contoh kebijakan XML ke JSON yang ditampilkan di atas, Anda dapat mengubah elemen <Source> untuk menggunakan variabel request seperti yang ada dalam alur permintaan:

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

Kode error

steps.xml2json.ExecutionFailed

Isi respons error

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

Kemungkinan penyebab

Kemungkinan penyebab error ini adalah:

Cause Deskripsi
Payload input tidak ada Payload input (XML) kosong.
Input Tidak Valid atau Salah Format Input (XML) yang diteruskan ke kebijakan XML ke JSON tidak valid atau salah format.

Penyebab: Payload input tidak ada

Dalam kebijakan XML ke JSON jika konten (payload) dari variabel yang ditentukan dalam elemen <Source> kosong, maka error ini akan terjadi.

Misalnya, jika elemen <Source> dalam kebijakan XML ke JSON ditetapkan sebagai variabel request atau response dan seharusnya berisi payload XML, error ini akan terjadi jika payload kosong.

Diagnosis

  1. Identifikasi kebijakan XML ke JSON tempat error terjadi. Anda dapat menemukan informasi ini di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. Periksa elemen <Source> dalam XML kebijakan XML ke JSON yang gagal dan tentukan variabel yang ditentukan. Misalnya, kebijakan XML ke JSON berikut memiliki elemen <Source> yang ditetapkan untuk meminta:

    <?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. Periksa apakah variabel yang ditentukan untuk elemen <Source> dalam kebijakan XMLToJSON kosong. Jika kosong, berarti itulah penyebab error.

    Dalam contoh kebijakan XML ke JSON yang ditampilkan di atas, payload permintaan (yaitu isi permintaan) yang dikirim oleh klien kosong.

    Contoh:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
    

    Karena payload permintaan XML kosong, Anda menerima kode error:

    steps.xml2json.ExecutionFailed
    

    Error ini juga dapat terjadi jika elemen <Source> disetel ke respons, tetapi payload kosong diteruskan oleh server backend.

Resolusi

Pastikan input yang diteruskan ke kebijakan XML ke JSON melalui elemen <Source> adalah payload XML yang valid dan tidak kosong.

Untuk memperbaiki masalah pada contoh kebijakan XML to JSON, teruskan payload XML yang valid. Contoh:

  1. Buat file bernama city.xml dengan konten berikut:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. Lakukan panggilan API menggunakan perintah cURL sebagai berikut:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

Penyebab: Input Tidak Valid atau Salah Format

Jika kebijakan XML ke JSON mengurai input yang tidak valid atau salah format, Anda akan mendapatkan error ini.

Misalnya, jika XML yang tidak valid berikut diberikan sebagai input untuk kebijakan XML ke JSON,

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

Anda akan mendapatkan error:

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

Diagnosis

  1. Identifikasi kebijakan XML ke JSON tempat error terjadi. Anda dapat menemukan informasi ini di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. Periksa elemen <Source> yang ditentukan dalam XML yang gagal ke XML kebijakan JSON. Misalnya, kebijakan XML ke JSON berikut memiliki elemen <Source> yang ditetapkan ke variabel request:

    <?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. Validasi apakah input yang ditentukan dalam elemen <Source> ke kebijakan XML To JSON adalah payload XML yang valid. Jika input tidak valid atau formatnya salah, itulah yang menjadi penyebab error.

    Pada contoh kebijakan XML ke JSON yang ditampilkan di atas, XML yang tidak valid berikut diteruskan ke kebijakan Ekstrak Variabel melalui file city.xml:

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

    Berikut adalah contoh panggilan API yang menunjukkan cara permintaan diteruskan:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    Payload XML yang diteruskan ke API tidak valid, karena XML tidak memiliki tag akhir untuk elemen <root>. Jadi, Anda akan menerima kode error:

    steps.xml2json.ExecutionFailed
    

    Error ini juga dapat terjadi jika elemen <Source> disetel ke respons, tetapi payload respons XML dari server backend tidak valid atau formatnya salah.

Resolusi

Pastikan input yang diteruskan ke kebijakan XML ke JSON melalui elemen <Source> valid dan tidak memiliki format yang salah.

Untuk memperbaiki masalah pada contoh kebijakan XML ke JSON yang dibahas di atas, teruskan permintaan payload XML yang valid seperti berikut:

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

OutputVariableIsNotAvailable

Kode error

steps.xml2json.OutputVariableIsNotAvailable

Isi respons error

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

Contoh Pesan Error

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

Penyebab

Error ini terjadi jika variabel yang ditentukan dalam elemen <Source> kebijakan XML ke JSON berjenis string dan elemen <OutputVariable> tidak ditentukan. Elemen <OutputVariable> bersifat wajib jika variabel yang ditentukan dalam elemen <Source> berjenis string.

Diagnosis

  1. Identifikasi Kebijakan XML ke JSON tempat error terjadi. Anda dapat menemukannya di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. Dalam Kebijakan XML ke JSON yang gagal, validasi apakah <OutputVariable> tidak ada.

    Berikut adalah contoh Kebijakan XML ke JSON yang tidak memiliki elemen <OutputVariable>.

    <?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. Tentukan jenis variabel yang ditentukan dalam elemen <Source>:

    1. Temukan kode dalam paket API Proxy, tempat variabel ditentukan terlebih dahulu.
    2. Setelah mengetahui kebijakan tempat variabel ditentukan dan diisi terlebih dahulu, Anda perlu menentukan jenis variabel tersebut sebagai berikut:
      1. Periksa nilai atribut type (jika ada).
      2. Jika atribut type tidak ada, variabel akan dianggap sebagai string.
    3. Jika jenis variabelnya adalah string, berarti itulah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya dalam Referensi variabel.

    Misalnya, lihat variabel TrackingNumber dalam kebijakan XML ke JSON di atas. Jenisnya adalah string. Sekarang, pertimbangkan kebijakan Tetapkan Pesan yang digunakan untuk menetapkan nilai ke variabel yang disebut TrackingNumber seperti yang ditunjukkan di bawah ini:

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

    Perhatikan bahwa jenis variabel yang ditetapkan melalui <AssignVariable> adalah string. Jadi, variabel TrackingNumber adalah jenis string.

    Sekarang, ingat bahwa variabel TrackingNumber digunakan dalam elemen <Source> kebijakan XML ke JSON:

    <Source>TrackingNumber</Source>
    

    Karena TrackingNumber adalah jenis string dan <OutputVariable> tidak ada dalam kebijakan, Anda akan menerima kode error:

    steps.xml2json.OutputVariableIsNotAvailable
    

Resolusi

Pastikan jika variabel yang ditentukan dalam elemen <Source> Kebijakan XMLToJSON adalah string jenis, elemen <OutputVariable> bersifat wajib dalam kasus ini.

Untuk memperbaiki Kebijakan XML ke JSON yang dibahas di atas, sertakan elemen <OutputVariable> seperti yang ditunjukkan di bawah ini.

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

Kode error

steps.xml2json.InCompatibleTypes

Isi respons error

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

Contoh Pesan Error

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

Penyebab

Error ini terjadi jika jenis variabel yang ditentukan dalam elemen <Source> dan elemen <OutputVariable> tidak sama. Jenis variabel yang terdapat dalam elemen <Source> dan elemen <OutputVariable> harus cocok.

The valid types are message and string.

Diagnosis

  1. Identifikasi Kebijakan XML ke JSON tempat error terjadi. Anda dapat menemukannya di elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama kebijakannya adalah XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. Dalam Kebijakan XML ke JSON yang gagal, perhatikan nilai yang ditentukan di <OutputVariable>.

    Berikut adalah contoh kebijakan XMLToJSON yang tidak memiliki elemen <OutputVariable>

    <?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. Tentukan jenis variabel yang ditentukan dalam elemen <Source> dan <OutputVariable>:

    1. Temukan kode dalam paket API Proxy, tempat setiap variabel ini ditentukan terlebih dahulu.
    2. Setelah mengetahui kebijakan tempat variabel ditentukan dan diisi terlebih dahulu, Anda perlu menentukan jenis variabel tersebut sebagai berikut:
      1. Periksa nilai atribut type (jika ada).
      2. Jika atribut type tidak ada, variabel akan dianggap sebagai string.
    3. Jika jenis variabel yang ditentukan dalam <Source> adalah string, sedangkan jenis <OutputVariable> adalah pesan atau sebaliknya, hal tersebut adalah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya dalam Referensi variabel.

    Sebagai contoh, pertimbangkan kebijakan Tetapkan Pesan yang digunakan untuk menetapkan nilai ke variabel yang disebut TrackingNumber seperti yang ditunjukkan di bawah ini:

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

    Perhatikan bahwa jenis variabel yang ditetapkan melalui <AssignVariable> adalah string. Jadi, variabel TrackingNumber adalah string jenis.

    Sekarang, ingat bahwa variabel TrackingNumber digunakan dalam elemen <Source> kebijakan XMLToJSON:

    <Source>TrackingNumber</Source>
    

    Demikian pula, ingat bahwa variabel request digunakan dalam elemen <OutputVariable> dari kebijakan XML To JSON:

    <OutputVariable>request</OutputVariable>
    

    Karena TrackingNumber berjenis string sedangkan variabel response berjenis message, keduanya adalah jenis yang tidak kompatibel sehingga Anda menerima kode error:

    steps.xml2json.InCompatibleTypes
    

    Error di atas juga dapat terjadi jika variabel dalam elemen <Source> adalah jenis message, tetapi variabel dalam elemen <OutputVariable> merupakan string jenis.

Resolusi

Pastikan jenis variabel yang ditentukan dalam elemen <Source> dan elemen <OutputVariable> selalu sama. Jenis variabel yang ada dalam elemen <Source> dan elemen <OutputVariable> harus cocok.

Untuk memperbaiki Kebijakan XML ke JSON yang telah dibahas di atas, Anda dapat mendeklarasikan variabel lain TrackingNumber_output dari jenis string menggunakan Kebijakan Tetapkan Pesan dan menggunakan variabel ini di elemen <OutputVariable> dari Kebijakan XML ke JSON.

Kebijakan Tetapkan Pesan yang diubah:

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

Kebijakan XMLToJSON yang diubah:

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

Kode error

steps.xml2json.InvalidSourceType

Isi respons error

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

Contoh Pesan Error

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

Penyebab

Error ini terjadi jika jenis variabel yang digunakan untuk menentukan elemen <Source> tidak valid.Jenis variabel yang valid adalah message dan string.

Diagnosis

  1. Identifikasi jenis sumber yang tidak valid yang digunakan dalam kebijakan XML ke JSON. Anda dapat menemukan informasi ini dari pesan error. Misalnya, dalam error berikut, jenis yang tidak valid adalah bilangan bulat.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Periksa semua kebijakan XML ke JSON di Proxy API tertentu tempat kegagalan terjadi. Dalam Kebijakan XML ke JSON yang gagal, perhatikan nama variabel yang ditentukan di <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>
    
  3. Tentukan jenis variabel yang ditentukan dalam elemen <Source>:

    1. Cari kode dalam paket Proxy API, tempat variabel ini ditentukan terlebih dahulu.
    2. Setelah mengetahui kebijakan tempat variabel ditentukan dan diisi terlebih dahulu, Anda perlu menentukan jenis variabel tersebut sebagai berikut:
      1. Periksa nilai atribut type (jika ada).
      2. Jika atribut jenis tidak ada, variabel tersebut dianggap sebagai string.
    3. Jika jenis variabel yang ditentukan di <Source> bukan jenis message atau string, maka itulah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya di Referensi variabel.

    Sebagai contoh, pertimbangkan kebijakan ExtractVariables yang digunakan untuk mengekstrak nilai dari payload XML dan menetapkan nilai ke variabel BookCode menjadi jenis integer seperti yang ditunjukkan di bawah ini:

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

    Sekarang, ingat bahwa variabel BookCode digunakan dalam elemen <Source> kebijakan XML ke JSON:

    <Source>BookCode</Source>
    

    Karena jenis variabel ini adalah Integer, yang bukan jenis <Source> yang valid, Proxy API gagal dengan error:

    steps.xml2json.InvalidSourceType
    

Resolusi

Pastikan jenis variabel yang digunakan untuk menentukan elemen <Source> valid. Jenis <Source> yang valid adalah message dan string.

Untuk menghindari error di atas dengan kebijakan XML To JSON, Anda dapat menggunakan variabel request yang berjenis message atau string lain yang merupakan payload XML yang valid.