أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
SourceUnavailable
رمز الخطأ
steps.json2xml.SourceUnavailable
نص الاستجابة للخطأ
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
مثال على الخطأ
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
السبب
يحدث هذا الخطأ إذا كان المتغيّر message المحدّد في العنصر <Source>
من سياسة JSON إلى XML هو:
- خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم تنفيذ السياسة فيه)
- لا يمكن حلّه (لم يتم تحديده)
على سبيل المثال، يحدث هذا الخطأ إذا كان من المفترض تنفيذ سياسة تحويل JSON إلى XML في عملية معالجة الطلب، ولكن تم ضبط عنصر <Source>
على المتغيّر response
الذي لا يتوفّر في عملية معالجة الطلب.
التشخيص
حدِّد سياسة تحويل JSON إلى XML التي حدث فيها الخطأ واسم المتغيّر غير المتاح. يمكنك العثور على كلا العنصرَين في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، في سياسةfaultstring
التالية، يكون اسم السياسة هوConvert-JSONToXML
والمتغيّر هوresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
في ملف XML لسياسة JSON إلى XML التي تعذّر تنفيذها، تأكَّد من أنّ اسم المتغيّر المحدَّد في العنصر
<Source>
يتطابق مع اسم المتغيّر المحدّد في سلسلة الخطأ (الخطوة رقم 1 أعلاه). على سبيل المثال، تحدّد السياسة التالية من JSON إلى XML متغيّرًا باسمresponse
في العنصر<Source>
، والذي يتطابق مع محتوىfaultstring
:<?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>
حدِّد ما إذا كان المتغيّر المستخدَم في عنصر
<Source>
محدّدًا ومتاحًا في المسار الذي يتم فيه تنفيذ سياسة تحويل JSON إلى XML.إذا كان المتغيّر إما:
- خارج النطاق (غير متوفّر في العملية المحدّدة التي يتم تنفيذ السياسة فيها)
- لا يمكن حلّه (لم يتم تحديده)
هذا هو سبب الخطأ.
على سبيل المثال، لنفترض أنّه من المفترض تنفيذ سياسة تحويل JSON إلى XML الموضّحة أعلاه في عملية الطلب. يُرجى تذكُّر أنّ المتغيّر
response
يتم استخدامه في عنصر<Source>
ضمن سياسة تحويل ملفات JSON إلى XML. لا يتوفّر متغيّر الردّ إلا في مسار الردّ.بسبب عدم توفّر المتغيّر
response
في عملية إرسال الطلب، يظهر لك رمز الخطأ التالي:steps.json2xml.SourceUnavailable
الدقة
تأكَّد من أنّ المتغيّر الذي تم ضبطه في عنصر <Source>
لسياسة تحويل JSON إلى XML التي تعذّر تنفيذها محدّد ومتوفّر في العملية التي يتم تنفيذ السياسة فيها.
لتصحيح مثال سياسة تحويل JSON إلى XML المعروض أعلاه، يمكنك تعديل العنصر <Source>
لاستخدام المتغيّر request
، لأنّه متوفّر في مسار الطلب:
<?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
رمز الخطأ
steps.json2xml.ExecutionFailed
نص استجابة الخطأ
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
الأسباب المحتملة
في ما يلي الأسباب المحتمَلة لهذا الخطأ:
السبب | الوصف |
حمولة الإدخال غير متوفّرة | حمولة الإدخال (JSON) فارغة. |
إدخال غير صالح أو مكتوب بشكل غير صحيح | الإدخال (بتنسيق JSON) الذي تم تمريره إلى سياسة تحويل JSON إلى XML غير صالح أو بتنسيق غير صحيح. |
السبب: عدم توفّر حمولة الإدخال
في سياسة تحويل JSON إلى XML، إذا كان محتوى (حمولة) المتغيّر المحدّد في عنصر <Source>
فارغًا، يحدث هذا الخطأ.
على سبيل المثال، إذا تم ضبط العنصر <Source>
في سياسة JSON إلى XML كمتغيّر request
أو response
وكان من المفترض أن تحتوي على حمولة JSON، ولكن إذا كانت الحمولة فارغة، سيحدث الخطأ.
التشخيص
حدِّد سياسة JSON إلى XML التي حدث فيها الخطأ. يمكنك العثور على هذه المعلومات في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم السياسة هوConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
افحص العنصر
<Source>
في ملف XML الخاص بسياسة XML الذي تعذّر دمجه بتنسيق JSON إلى XML وحدِّد المتغيّر المحدّد. على سبيل المثال، تم ضبط عنصر<Source>
في سياسة تحويل JSON إلى XML التالية علىrequest
:<?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>
تحقَّق مما إذا كان المتغيّر المحدّد لعنصر
<Source>
في السياسة فارغًا. إذا كان الحقل فارغًا، هذا هو سبب الخطأ.في مثال سياسة تحويل JSON إلى XML المعروض أعلاه، تكون الحمولة المطلوبة (أي محتوى الطلب) التي أرسلها العميل فارغة.
على سبيل المثال:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"
لأنّ الحمولة في استجابة JSON فارغة، يظهر لك رمز الخطأ:
steps.json2xml.ExecutionFailed
يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط عنصر
<Source>
على response، ولكن تم تمرير حمولة فارغة من خلال خادم الخلفية.
الدقة
تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة JSON إلى XML في العنصر <Source>
هو حمولة JSON صالحة وليس فارغًا.
لحلّ المشكلة في سياسة تحويل نموذج JSON إلى XML، يجب تمرير حمولة JSON صالحة. على سبيل المثال:
أنشئ ملفًا باسم
city.json
يتضمّن المحتوى التالي:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
يمكنك طلب بيانات من واجهة برمجة التطبيقات باستخدام أمر cURL على النحو التالي:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
السبب: إدخال غير صالح أو مشوه
إذا كانت سياسة تحويل JSON إلى XML تُحلِّل إدخالًا غير صالح أو بتنسيق غير صحيح، سيظهر لك هذا الخطأ.
على سبيل المثال، إذا تم تقديم ملف JSON غير الصالح التالي كإدخال لسياسة تحويل JSON إلى XML،
[
"args": ["name" : "Google" ]
]
ستظهر لك رسالة الخطأ التالية:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
التشخيص
حدِّد سياسة تحويل JSON إلى XML التي حدث فيها الخطأ. يمكنك العثور على هذه المعلومات في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، في سياسةfaultstring
التالية، يكون اسم السياسة هوConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
راجِع عنصر
<Source>
المحدّد في ملف XML لسياسة تحويل JSON إلى XML الذي تعذّر تحويله. على سبيل المثال، تم ضبط عنصر<Source>
في سياسة تحويل JSON إلى XML التالية على المتغيّرrequest
:<?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>
تحقّق ممّا إذا كان الإدخال المحدّد في عنصر
<Source>
حمولة JSON صالحة. إذا كان الإدخال غير صالح أو تم تنسيقه بشكلٍ غير صحيح، هذا هو سبب الخطأ.لنفترض أنّه تم نقل ملف JSON غير الصالح التالي إلى السياسة.
[ "args": ["name" : "Google" ] ]
في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات يوضِّح كيفية تمرير الطلب:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
الحمولة بتنسيق JSON التي تم تمريرها في الطلب غير صالحة لأنّ عنصر JSON يبدأ وينتهي بأقواس مربّعة ([ ]). لهذا السبب، يظهر لك رمز الخطأ:
steps.json2xml.ExecutionFailed
يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط عنصر
<Source>
على response ولكنّ الحمولة في استجابة JSON غير صالحة أو ذات تنسيق غير صحيح.
الحلّ
تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة JSON إلى XML في العنصر <Source>
صالح وليس مكتوبًا بشكلٍ غير صحيح.
لحلّ المشكلة المتعلّقة بسياسة تحويل نموذج JSON إلى XML التي تمت مناقشتها أعلاه، عليك إرسال طلب حِمل JSON صالح على النحو التالي:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
رمز الخطأ
steps.json2xml.OutputVariableIsNotAvailable
نص الاستجابة للخطأ
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
مثال على الخطأ
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
السبب
يحدث هذا الخطأ إذا كان المتغيّر المحدّد في عنصر <Source>
من سياسة تحويل JSON إلى XML من النوع string ولم يتم تعريف العنصر <OutputVariable>
. يكون عنصر <OutputVariable>
إلزاميًا عندما يكون المتغيّر المحدّد في عنصر <Source>
من النوع سلسلة.
التشخيص
حدِّد سياسة تحويل JSON إلى XML التي حدث فيها الخطأ. يمكنك العثور عليه في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم السياسة هوCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
في سياسة تحويل JSON إلى XML التي تعذّر إكمالها، تحقّق مما إذا كان الرمز
<OutputVariable>
غير متوفّر.يتضمّن نموذج سياسة JSONToXML التالي عنصر
<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>
حدِّد نوع المتغيّر المحدّد في عنصر
<Source>
:- حدِّد مكان الرمز ضمن "وكيل واجهة برمجة التطبيقات" الذي تمّ فيه تعريف المتغيّر أولاً.
- بعد معرفة السياسة التي تم فيها تعريف المتغيّر وملؤه أولاً، عليك تحديد نوع هذا المتغيّر على النحو التالي:
- تحقّق من قيمة سمة type (إذا كانت متوفّرة).
- إذا لم تكن سمة type متوفّرة، يُعتبَر المتغيّر سلسلة.
- إذا كان نوع المتغيّر هو سلسلة، هذا هو سبب الخطأ. يمكنك الاطّلاع على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.
على سبيل المثال، اطّلِع على المتغيّر
PostalCode
في سياسة تحويل JSON إلى XML أعلاه.على سبيل المثال، لنفترض أنّه يتم استخدام سياسة "تعيين رسالة" لتعيين قيمة لمتغيّر يُسمّى
PostalCode
كما هو موضّح أدناه:<?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>
يُرجى العِلم أنّ نوع المتغيّر الذي تم ضبطه في
<AssignVariable>
هو سلسلة. إذًا، يكون المتغيرPostalCode
من نوع السلسلة.تذكَّر الآن أنّه يتم استخدام المتغيّر
PostalCode
في العنصر<Source>
لسياسة JSONToXML:<Source>PostalCode</Source>
بما أنّ
PostalCode
من النوع سلسلة والعنصر<OutputVariable>
غير متوفّر، يظهر لك رمز الخطأ:steps.json2xml.OutputVariableIsNotAvailable
الدقة
تأكَّد من أنّه إذا كان المتغيّر المحدّد في عنصر <Source>
من سياسة JSONToXML من النوع سلسلة، يتم تعريف العنصر <OutputVariable>
ضمن السياسة.
لتصحيح سياسة JSONToXML التي تمت مناقشتها أعلاه، أدرِج عنصر <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>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
رمز الخطأ
steps.json2xml.InCompatibleTypes
نص الاستجابة للخطأ
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
مثال على الخطأ
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
السبب
يحدث هذا الخطأ إذا كان نوع المتغيّر المحدّد في عنصر <Source>
وعنصر <OutputVariable>
غير متطابق. يجب أن يتطابق نوع المتغيّرات المضمّنة في العنصر <Source>
مع العنصر <OutputVariable>
.
الأنواع الصالحة هي message
وstring
.
التشخيص
حدِّد سياسة JSON إلى XML التي حدث فيها الخطأ. يمكنك العثور عليه في عنصر
faultstring
من استجابة الخطأ. على سبيل المثال، فيfaultstring
التالي، اسم السياسة هوJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
في سياسة JSON إلى XML التي تعذّر تنفيذها، لاحظ القيم المحدّدة في
<OutputVariable>
و<Source>
.راجِع المثال التالي على السياسة:
<?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>
حدِّد نوع المتغيّر المحدّد في عنصرَي
<Source>
و<OutputVariable>
:- حدِّد مكان الرمز في "وكيل واجهة برمجة التطبيقات" حيث تم تعريف كل متغيّر من هذه المتغيّرات أولاً.
- بعد معرفة السياسة التي يتم فيها تعريف المتغيّر وتعبئته أولاً، عليك تحديد نوع ذلك المتغيّر على النحو التالي:
- تحقّق من قيمة سمة type (إذا كانت متوفّرة).
- إذا لم تكن سمة type متوفّرة، يُعتبَر المتغيّر سلسلة.
- إذا كان نوع المتغيّر المحدّد في
<Source>
هو سلسلة بينما كان نوع<OutputVariable>
هو رسالة أو العكس، هذا هو سبب الخطأ. يمكنك الاطّلاع على معلومات عن المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.
على سبيل المثال، نأخذ سياسة "تخصيص رسالة" التي تُستخدَم لتخصيص قيمة لمتغيّر يُسمّى
PostalCode
كما هو موضّح أدناه:<?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>
يُرجى العلم أنّ نوع المتغيّر الذي تمّ ضبطه في
<AssignVariable>
هو سلسلة، وبالتالي، يكون المتغيّرPostalCode
من النوع سلسلة.تذكَّر الآن أنّه يتم استخدام المتغيّر
PostalCode
في العنصر<Source>
لسياسة JSONToXML:<Source>PostalCode</Source>
وبالمثل، تذكَّر أنّه يتم استخدام المتغيّر
response
في العنصر<OutputVariable>
لسياسة JSONToXML:<OutputVariable>response</OutputVariable>
بما أنّ المتغيّر
PostalCode
من النوع string بينما المتغيّرresponse
من النوع message، فإنّ هذين النوعَين غير متوافقَين، لذا يظهر لك رمز الخطأ:steps.json2xml.InCompatibleTypes
يمكن أن يحدث الخطأ أعلاه أيضًا إذا كان المتغير في العنصر
<Source>
من النوعmessage
ولكن المتغير في العنصر<OutputVariable>
من نوع السلسلة.
الدقة
تأكد من أن نوع المتغير المحدد في العنصر <Source>
وعنصر <OutputVariable>
هو نفسه دائمًا. يجب أن يتطابق نوع المتغيّرات المضمّنة في العنصر <Source>
مع نوع العنصر <OutputVariable>
. وهذا يعني أنّه يجب التأكّد من أنّ نوع عنصرَي <Source>
و<OutputVariable>
هو سلسلة أو نوع رسالة.
لتصحيح سياسة تحويل JSON إلى XML التي تمت مناقشتها أعلاه، يمكنك تحديد متغيّر آخر PostalCode_output
من النوع string باستخدام سياسة تحديد الرسالة، واستخدام هذا المتغيّر في عنصر <OutputVariable>
من سياسة تحويل JSON إلى XML.
سياسة تعيين الرسائل المعدَّلة:
<?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>
سياسة 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
رمز الخطأ
steps.json2xml.InvalidSourceType
نص الاستجابة للخطأ
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
مثال على الخطأ
{
"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"
}
}
}
السبب
يحدث هذا الخطأ إذا كان نوع المتغيّر المستخدَم لتحديد عنصر <Source>
غير صالح.إنّ الأنواع الصالحة للمتغيّر هي message
وstring
.
التشخيص
حدِّد نوع المصدر غير الصالح المستخدَم في سياسة تحويل JSON إلى XML. يمكنك العثور على هذه المعلومات في رسالة الخطأ. على سبيل المثال، في الخطأ التالي، النوع غير الصالح هو Integer.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
افحص جميع سياسات JSON إلى XML في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. في سياسة JSON إلى XML التي تعذّرت معالجتها، سجِّل اسم المتغيّر المحدّد في
<Source>
.في ما يلي نموذج سياسة تحتوي على المتغيّر المسمى EmployeeID المحدّد في العنصر
<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>
حدِّد نوع المتغيّر المحدّد في عنصر
<Source>
:- حدِّد موقع الرمز داخل الخادم الوكيل لواجهة برمجة التطبيقات حيث تم تحديد هذا المتغيّر أولاً.
- بعد تحديد السياسة التي تم فيها تعريف المتغيّر وملؤه أولاً، عليك تحديد نوع هذا المتغيّر على النحو التالي:
- تحقّق من قيمة سمة type (إذا كانت متوفّرة).
- إذا لم تكن سمة type متوفّرة، يُعتبَر المتغيّر سلسلة.
- إذا لم يكن نوع المتغيّر المحدَّد في
<Source>
ليس نوع رسالة أو سلسلة، يكون هذا هو سبب الخطأ. يمكنك الاطّلاع على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.
على سبيل المثال، لنأخذ في الاعتبار أنّ سياسة استخراج المتغيّرات المستخدَمة لاستخراج القيمة من حمولة JSON وضبط القيمة على المتغيّر
EmployeeID
من نوع العدد الصحيح كما هو موضّح أدناه:<?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>
تذكَّر الآن أنّه يتم استخدام المتغيّر
EmployeeID
في العنصر<Source>
لسياسة JSONToXML:<Source>EmployeeID</Source>
بما أنّ نوع هذا المتغيّر هو
Integer
، وهو نوع غير صالح من أنواع<Source>
، يتعذّر تنفيذ الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور الخطأ:steps.json2xml.InvalidSourceType
الدقة
تأكَّد من أنّ نوع المتغيّر المستخدَم لتحديد عنصر <Source>
صالح. نوعا <Source>
الصالحان هما message
وstring
.
لتجنُّب الخطأ أعلاه في سياسة JSONToXML، يمكنك استخدام المتغيّر request الذي يكون من النوع message أو أي سلسلة أخرى تكون حمولة JSON صالحة.