Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat
Dokumentasi Apigee Edge.
SourceUnavailable
Kode error
steps.json2xml.SourceUnavailable
Isi respons error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Contoh error
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Penyebab
Error ini terjadi jika variabel pesan yang ditentukan dalam elemen <Source>
kebijakan JSON ke XML:
- Di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan) atau
- Tidak dapat diselesaikan (tidak ditentukan)
Misalnya, error ini terjadi jika kebijakan JSON ke XML seharusnya dieksekusi dalam alur permintaan, tetapi elemen <Source>
disetel ke variabel response
, yang tidak ada dalam alur permintaan.
Diagnosis
Identifikasi kebijakan JSON ke XML tempat error terjadi dan nama variabel yang tidak tersedia. Anda dapat menemukan kedua item ini di elemen
faultstring
respons error. Misalnya, dalamfaultstring
berikut, nama kebijakannya adalahConvert-JSONToXML
dan variabelnya adalahresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
Di XML kebijakan JSON ke XML yang gagal, pastikan nama variabel yang ditetapkan dalam elemen
<Source>
cocok dengan nama variabel yang diidentifikasi dalam string fault (langkah #1 di atas). Misalnya, kebijakan JSON ke XML berikut menentukan variabel bernamaresponse
dalam elemen<Source>
, yang cocok dengan yang ada difaultstring
:<?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>
Tentukan apakah variabel yang digunakan dalam elemen
<Source>
ditentukan dan tersedia dalam alur tempat kebijakan JSON ke XML dijalankan.Jika variabelnya adalah:
- Di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan) atau
- Tidak dapat diselesaikan (tidak ditentukan)
maka itulah penyebab {i>error<i}.
Sebagai contoh, misalkan kebijakan JSON ke XML yang ditampilkan di atas seharusnya dijalankan dalam alur request. Ingat kembali bahwa variabel
response
digunakan dalam elemen<Source>
dari kebijakan JSON ke XML. Variabel respons hanya tersedia dalam alur respons.Karena variabel
response
tidak ada dalam alur permintaan, Anda akan menerima kode error:steps.json2xml.SourceUnavailable
Resolusi
Pastikan variabel yang disetel di elemen <Source>
dari kebijakan JSON ke XML yang gagal ditentukan dan ada dalam alur tempat kebijakan dijalankan.
Untuk memperbaiki contoh kebijakan JSON ke XML yang ditampilkan di atas, Anda dapat memodifikasi elemen <Source>
untuk menggunakan variabel request
, karena elemen tersebut ada dalam alur permintaan:
<?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
Kode error
steps.json2xml.ExecutionFailed
Isi respons error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Kemungkinan penyebab
Kemungkinan penyebab error ini adalah:
Penyebab | Deskripsi |
Payload input tidak ada | Payload input (JSON) kosong. |
Input Tidak Valid atau Salah Format | Input (JSON) yang diteruskan ke kebijakan JSON ke XML tidak valid atau formatnya salah. |
Penyebab: Payload input tidak ada
Dalam kebijakan JSON ke XML jika konten (payload) variabel yang ditentukan dalam elemen <Source>
kosong, error ini akan terjadi.
Misalnya, jika elemen <Source>
dalam kebijakan JSON ke XML ditetapkan sebagai variabel request
atau response
dan seharusnya berisi payload JSON, tetapi jika payload kosong, error akan terjadi.
Diagnosis
Identifikasi kebijakan JSON ke XML tempat error terjadi. Anda dapat menemukan informasi ini di elemen
faultstring
respons error. Misalnya, difaultstring
berikut, nama kebijakannya adalahConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Periksa elemen
<Source>
dalam XML kebijakan JSON ke XML yang gagal dan tentukan variabel yang ditentukan. Misalnya, kebijakan JSON ke XML berikut memiliki elemen<Source>
yang disetel kerequest
:<?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>
Periksa apakah variabel yang ditentukan untuk elemen
<Source>
dalam kebijakan kosong. Jika kosong, maka itulah penyebab errornya.Pada contoh kebijakan JSON ke XML yang ditampilkan di atas, payload permintaan (yaitu isi permintaan) yang dikirim oleh klien kosong.
Contoh:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
Jika your_host_alias adalah domain yang tersedia secara publik yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi di properti
virtualhosts.hostAliases
dalam file penggantian Anda. Lihat Menentukan konfigurasi penggantian.Karena payload respons JSON kosong, Anda akan menerima kode error:
steps.json2xml.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 JSON ke XML di elemen <Source>
adalah payload JSON yang valid dan tidak kosong.
Untuk memperbaiki masalah pada contoh kebijakan JSON ke XML, teruskan payload JSON yang valid. Contoh:
Buat file bernama
city.json
dengan konten berikut:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Lakukan panggilan API menggunakan perintah curl sebagai berikut:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Jika your_host_alias adalah domain yang tersedia secara publik yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi di properti
virtualhosts.hostAliases
dalam file penggantian Anda. Lihat Menentukan konfigurasi penggantian.
Penyebab: Input Tidak Valid atau Salah Format
Jika kebijakan JSON ke XML mengurai input yang tidak valid atau salah format, Anda akan mendapatkan error ini.
Misalnya, jika JSON yang tidak valid berikut ini disediakan sebagai input untuk kebijakan JSON ke XML,
[
"args": ["name" : "Google" ]
]
Anda akan mendapatkan error:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnosis
Identifikasi kebijakan JSON ke XML tempat error terjadi. Anda dapat menemukan informasi ini di elemen
faultstring
respons error. Misalnya, difaultstring
berikut, nama kebijakannya adalahConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Periksa elemen
<Source>
yang ditentukan dalam XML kebijakan JSON ke XML yang gagal. Misalnya, kebijakan JSON ke XML berikut memiliki elemen<Source>
yang disetel ke variabelrequest
:<?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>
Validasi apakah input yang ditentukan dalam elemen
<Source>
adalah payload JSON yang valid. Jika input tidak valid atau formatnya salah, itulah yang menjadi penyebab error.Asumsikan bahwa JSON yang tidak valid berikut diteruskan ke kebijakan
[ "args": ["name" : "Google" ] ]
Berikut adalah contoh panggilan API yang menunjukkan cara penerusan permintaan:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Jika your_host_alias adalah domain yang tersedia secara publik yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi di properti
virtualhosts.hostAliases
dalam file penggantian Anda. Lihat Menentukan konfigurasi penggantian.Payload JSON yang diteruskan dalam permintaan tidak valid karena objek JSON dimulai dan diakhiri dengan tanda kurung siku ([ ]). Oleh karena itu, Anda menerima kode error:
steps.json2xml.ExecutionFailed
Error ini juga dapat terjadi jika elemen
<Source>
disetel ke respons, tetapi payload respons JSON tidak valid atau salah format.
Resolusi
Pastikan input yang diteruskan ke kebijakan JSON ke XML dalam elemen <Source>
valid dan tidak memiliki format yang salah.
Untuk memperbaiki masalah pada contoh kebijakan JSON ke XML yang dibahas di atas, teruskan permintaan payload JSON yang valid sebagai berikut:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Kode error
steps.json2xml.OutputVariableIsNotAvailable
Isi respons error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Contoh error
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Penyebab
Error ini terjadi jika variabel yang ditentukan dalam elemen <Source>
JSON ke Kebijakan XML merupakan string jenis dan elemen <OutputVariable>
tidak ditentukan. Elemen <OutputVariable>
bersifat wajib jika variabel yang ditentukan dalam elemen <Source>
merupakan string jenis.
Diagnosis
Identifikasi Kebijakan JSON ke XML tempat error terjadi. Anda dapat menemukannya di elemen
faultstring
respons error. Misalnya, difaultstring
berikut, nama kebijakannya adalahCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
Di Kebijakan JSON ke XML yang gagal, validasi jika
<OutputVariable>
tidak ada.Contoh kebijakan JSONToXML berikut tidak memiliki elemen
<OutputVariable>
:<?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>
Menentukan jenis variabel yang ditentukan dalam elemen
<Source>
:- Cari kode dalam Proxy API tempat variabel ditetapkan terlebih dahulu.
- Setelah mengetahui kebijakan tempat variabel ditetapkan dan diisi terlebih dahulu, Anda harus menentukan jenis variabel tersebut seperti berikut:
- Periksa nilai atribut jenis (jika ada).
- Jika atribut jenis tidak ada, variabel tersebut dianggap sebagai string.
- Jika jenis variabelnya adalah string, maka itulah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya dalam Referensi variabel.
Misalnya, lihat variabel
PostalCode
dalam kebijakan JSON ke XML di atas.Sebagai contoh, pertimbangkan bahwa kebijakan Tetapkan Pesan digunakan untuk menetapkan nilai ke variabel bernama
PostalCode
seperti yang ditunjukkan di bawah ini:<?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>
Perhatikan bahwa jenis variabel yang ditetapkan di
<AssignVariable>
adalah string. Jadi, variabelPostalCode
adalah jenis string.Sekarang, ingat kembali bahwa variabel
PostalCode
digunakan dalam elemen<Source>
dari kebijakan JSONToXML:<Source>PostalCode</Source>
Karena
PostalCode
merupakan jenis string dan elemen<OutputVariable>
tidak ada, Anda menerima kode error:steps.json2xml.OutputVariableIsNotAvailable
Resolusi
Pastikan bahwa jika variabel yang ditentukan dalam elemen <Source>
Kebijakan JSONToXML adalah dari string jenis, elemen <OutputVariable>
akan ditentukan dalam kebijakan.
Untuk memperbaiki Kebijakan JSONToXML yang dibahas di atas, sertakan elemen <OutputVariable>
seperti yang ditunjukkan di bawah.
<?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
Kode error
steps.json2xml.InCompatibleTypes
Isi respons error
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Contoh error
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Penyebab
Error ini terjadi jika jenis variabel yang ditentukan dalam elemen <Source>
dan elemen <OutputVariable>
tidak sama. Jenis variabel yang ada dalam elemen <Source>
dan elemen <OutputVariable>
harus cocok.
Jenis yang valid adalah message
dan string
.
Diagnosis
Identifikasi Kebijakan JSON ke XML tempat error terjadi. Anda dapat menemukannya di elemen
faultstring
respons error. Misalnya, difaultstring
berikut, nama kebijakannya adalahJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Dalam Kebijakan JSON ke XML yang gagal, catat nilai yang ditentukan dalam
<OutputVariable>
dan<Source>
.Perhatikan contoh kebijakan berikut:
<?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>
Menentukan jenis variabel yang ditentukan dalam elemen
<Source>
dan<OutputVariable>
:- Temukan kode dalam Proxy API tempat setiap variabel ini ditentukan terlebih dahulu.
- Setelah mengetahui kebijakan tempat variabel ditetapkan dan diisi terlebih dahulu, Anda harus menentukan jenis variabel tersebut seperti berikut:
- Periksa nilai atribut jenis (jika ada).
- Jika atribut jenis tidak ada, variabel tersebut dianggap sebagai string.
- Jika jenis variabel yang ditentukan dalam
<Source>
adalah string sedangkan jenis<OutputVariable>
adalah pesan atau sebaliknya, maka itulah 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 bernama
PostalCode
seperti yang ditunjukkan di bawah ini:<?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>
Perhatikan bahwa jenis variabel yang ditetapkan di
<AssignVariable>
adalah string; Oleh karena itu, variabelPostalCode
adalah jenis string.Sekarang, ingat kembali bahwa variabel
PostalCode
digunakan dalam elemen<Source>
dari kebijakan JSONToXML:<Source>PostalCode</Source>
Demikian pula, ingat bahwa variabel
response
digunakan dalam elemen<OutputVariable>
dari kebijakan JSONToXML:<OutputVariable>response</OutputVariable>
Karena
PostalCode
merupakan jenis string sedangkan variabelresponse
merupakan jenis pesan, jenis tersebut tidak kompatibel sehingga Anda menerima kode error:steps.json2xml.InCompatibleTypes
Error di atas juga dapat terjadi jika variabel dalam elemen
<Source>
adalah jenismessage
, 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. Artinya, pastikan jenis elemen <Source>
dan <OutputVariable>
merupakan jenis pesan atau string.
Untuk memperbaiki Kebijakan JSON ke XML yang dibahas di atas, Anda dapat mendeklarasikan variabel lain PostalCode_output
dari string jenis menggunakan Kebijakan Tetapkan Pesan, dan menggunakan variabel ini dalam elemen <OutputVariable>
Kebijakan JSON ke XML.
Perubahan kebijakan Tetapkan Pesan:
<?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>
Perubahan kebijakan JSONToXML:
<?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
Kode error
steps.json2xml.InvalidSourceType
Isi respons error
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Contoh error
{
"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"
}
}
}
Penyebab
Error ini terjadi jika jenis variabel yang digunakan untuk menentukan elemen <Source>
tidak valid.Jenis variabel yang valid adalah message
dan string
.
Diagnosis
Identifikasi jenis sumber yang tidak valid yang digunakan dalam kebijakan JSON ke XML. Anda dapat menemukan informasi ini dalam pesan error. Misalnya, dalam error berikut, tipe yang tidak valid adalah Integer.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Periksa semua kebijakan JSON ke XML di Proxy API tertentu tempat kegagalan terjadi. Dalam Kebijakan JSON ke XML yang gagal, catat nama variabel yang ditentukan di
<Source>
.Berikut ini contoh kebijakan yang memiliki variabel bernama EmployeeID yang ditentukan dalam elemen
<Source>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>EmployeeID</Source>
</JSONToXML>
Tentukan jenis variabel yang ditentukan dalam elemen
<Source>
:- Cari kode dalam Proxy API tempat variabel ini ditentukan terlebih dahulu.
- Setelah mengetahui kebijakan tempat variabel ditetapkan dan diisi terlebih dahulu, Anda harus menentukan jenis variabel tersebut seperti berikut:
- Periksa nilai atribut jenis (jika ada).
- Jika atribut jenis tidak ada, variabel tersebut dianggap sebagai string.
- Jika jenis variabel yang ditentukan dalam
<Source>
bukan merupakan jenis pesan atau string, maka itulah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya dalam Referensi variabel.
Sebagai contoh, mari kita pertimbangkan bahwa kebijakan ExtractVariables digunakan untuk mengekstrak nilai dari payload JSON dan menyetel nilai ke variabel
EmployeeID
jenis bilangan bulat seperti yang ditunjukkan di bawah ini:<?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>
Sekarang, ingat kembali bahwa variabel
EmployeeID
digunakan dalam elemen<Source>
dari kebijakan JSONToXML:<Source>EmployeeID</Source>
Karena jenis variabel ini adalah
Integer
, yang bukan jenis<Source>
yang valid, Proxy API gagal dengan error:steps.json2xml.InvalidSourceType
Resolusi
Pastikan jenis variabel yang digunakan untuk menentukan elemen <Source>
adalah
valid. Jenis <Source>
yang valid adalah message
dan string
.
Untuk menghindari error di atas dengan kebijakan JSONToXML, Anda dapat menggunakan permintaan yang merupakan jenis pesan atau string lainnya yang merupakan payload JSON valid.