คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
SourceUnavailable
รหัสข้อผิดพลาด
steps.xml2json.SourceUnavailable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากmessage หรือตัวแปรสตริงที่ระบุไว้ในองค์ประกอบ <Source>
ของนโยบาย XML เป็น JSON มีลักษณะดังนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นหากระบบควรจะดำเนินการกับนโยบาย XML เป็น JSON ในขั้นตอนคำขอ แต่องค์ประกอบ <Source>
ได้รับการตั้งค่าเป็นตัวแปร response
ซึ่งไม่มีอยู่ในขั้นตอนคำขอ
การวินิจฉัย
ระบุนโยบาย XML เป็น JSON ที่ทำให้เกิดข้อผิดพลาดและชื่อตัวแปรที่ไม่พร้อมใช้งาน คุณจะเห็นทั้ง 2 รายการนี้ในองค์ประกอบ
faultstring
ของคำตอบข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือConvert-XMLToJSON
และตัวแปรคือresponse
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
ใน XML ของนโยบาย JSON ที่ล้มเหลว ให้ตรวจสอบว่าชื่อตัวแปรที่ตั้งไว้ในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบาย XML เป็น JSON ต่อไปนี้จะระบุตัวแปรชื่อresponse
ในองค์ประกอบ<Source>
ซึ่งตรงกับสิ่งที่อยู่ใน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>
ตรวจสอบว่าตัวแปรที่ใช้ในองค์ประกอบ
<Source>
ได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่มีการบังคับใช้นโยบาย XML เป็น JSON หรือไม่หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กําหนด)
แสดงว่านี่อาจเป็นสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบาย XML เป็น JSON ที่แสดงด้านบนควรทำงานในขั้นตอน request จำได้ว่ามีการใช้ตัวแปร
response
ในองค์ประกอบ<Source>
ของนโยบาย XML เป็น JSON ตัวแปรการตอบกลับจะใช้ได้ในขั้นตอนการตอบกลับเท่านั้นเนื่องจากตัวแปรการตอบกลับไม่อยู่ในขั้นตอนการส่งคำขอ คุณจึงได้รับรหัสข้อผิดพลาดต่อไปนี้
steps.xml2json.SourceUnavailable
ความละเอียด
ตรวจสอบว่าตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ <Source>
ของนโยบายการเปลี่ยน XML เป็น JSON ที่ไม่สําเร็จได้รับการกําหนดและอยู่ในขั้นตอนที่นโยบายทํางาน
หากต้องการแก้ไขตัวอย่างนโยบาย XML เป็น JSON ที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <Source>
เพื่อใช้ตัวแปร 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/>
<Format>google</Format>
<OutputVariable>response</OutputVariable>
<Source>request</Source>
</XMLToJSON>
ExecutionFailed
รหัสข้อผิดพลาด
steps.xml2json.ExecutionFailed
เนื้อหาการตอบกลับข้อผิดพลาด
{ "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" } } }
สาเหตุที่เป็นไปได้
สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้คือ
สาเหตุ | คำอธิบาย |
ไม่มีเพย์โหลดอินพุต | เพย์โหลดอินพุต (XML) ว่างเปล่า |
อินพุตไม่ถูกต้องหรือมีรูปแบบไม่เป็นมาตรฐาน | อินพุต (XML) ที่ส่งไปยังนโยบาย XML ไปยัง JSON ไม่ถูกต้องหรือผิดรูปแบบ |
สาเหตุ: ไม่มีเพย์โหลดอินพุต
หากเนื้อหา (เพย์โหลด) ของตัวแปรที่ระบุในองค์ประกอบ <Source>
ว่างเปล่า ระบบจะแสดงข้อผิดพลาดนี้ในนโยบาย XML เป็น JSON
ตัวอย่างเช่น หากตั้งค่าองค์ประกอบ <Source>
ในนโยบาย XML เป็น JSON เป็นตัวแปร request
หรือ response
และควรจะมีพายโหลด XML ข้อผิดพลาดนี้จะแสดงขึ้นหากพายโหลดว่างเปล่า
การวินิจฉัย
ระบุนโยบาย XML เป็น JSON ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือConvert-XMLToJSON
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"
ตรวจสอบองค์ประกอบ
<Source>
ใน XML ของนโยบาย XML เป็น JSON ที่ไม่ผ่านการตรวจสอบ และระบุตัวแปรที่ระบุ ตัวอย่างเช่น นโยบาย XML เป็น JSON ต่อไปนี้มีเอลิเมนต์<Source>
ที่ตั้งค่าเป็นคำขอ<?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>
ตรวจสอบว่าตัวแปรที่ระบุสำหรับองค์ประกอบ
<Source>
ในนโยบาย XMLToJSON ว่างเปล่าหรือไม่ หากช่องนี้ว่างเปล่า แสดงว่านี่คือสาเหตุของข้อผิดพลาดในตัวอย่างนโยบาย XML เป็น JSON ที่แสดงด้านบน เพย์โหลดคำขอ (นั่นคือเนื้อหาคำขอ) ที่ไคลเอ็นต์ส่งมาว่างเปล่า
เช่น
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
เนื่องจากเพย์โหลดคำขอ XML ว่างเปล่า คุณจึงได้รับรหัสข้อผิดพลาด:
steps.xml2json.ExecutionFailed
ข้อผิดพลาดนี้ยังอาจเกิดขึ้นได้หากตั้งค่าองค์ประกอบ
<Source>
เป็น response แต่เซิร์ฟเวอร์แบ็กเอนด์ส่งเปย์โหลดว่าง
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย XML เป็น JSON ผ่านองค์ประกอบ <Source>
เป็นเพย์โหลด XML ที่ถูกต้องและไม่ใช่ค่าว่าง
หากต้องการแก้ไขปัญหาเกี่ยวกับนโยบายตัวอย่าง XML เป็น JSON ให้ส่งเพย์โหลด XML ที่ถูกต้อง เช่น
สร้างไฟล์ชื่อ city.xml ที่มีเนื้อหาต่อไปนี้
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
เรียกใช้ API โดยใช้คำสั่ง cURL ดังนี้
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
สาเหตุ: อินพุตไม่ถูกต้องหรือมีรูปแบบไม่เป็นมาตรฐาน
หากนโยบาย XML เป็น JSON แยกวิเคราะห์อินพุตที่ไม่ถูกต้องหรือผิดรูปแบบ คุณจะได้รับข้อผิดพลาดนี้
ตัวอย่างเช่น หากระบุ XML ที่ไม่ถูกต้องต่อไปนี้เป็นอินพุตของนโยบาย XML เป็น JSON
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
คุณจะได้รับข้อผิดพลาดต่อไปนี้
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
การวินิจฉัย
ระบุนโยบาย XML เป็น JSON ที่ทำให้เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือConvert-XMLToJSON
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
ตรวจสอบองค์ประกอบ
<Source>
ที่ระบุไว้ใน XML นโยบายการแปลง XML เป็น JSON ที่ไม่ผ่าน ตัวอย่างเช่น นโยบาย XML เป็น JSON ต่อไปนี้ตั้งค่าองค์ประกอบ<Source>
เป็นตัวแปร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>
ตรวจสอบว่าอินพุตที่ระบุไว้ในองค์ประกอบ
<Source>
ของนโยบาย XML เป็น JSON เป็นเพย์โหลด XML ที่ถูกต้องหรือไม่ หากอินพุตไม่ถูกต้องหรือผิดรูปแบบ แสดงว่านั่นคือสาเหตุของข้อผิดพลาดในตัวอย่างนโยบาย XML เป็น JSON ที่แสดงด้านบน ระบบส่ง XML ที่ไม่ถูกต้องต่อไปนี้ไปยังนโยบายการดึงข้อมูลตัวแปรผ่านไฟล์
city.xml
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
ตัวอย่างการเรียก API ที่แสดงวิธีส่งคําขอมีดังนี้
curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
เพย์โหลด XML ที่ส่งไปยัง API ไม่ถูกต้อง เนื่องจาก XML ไม่มีแท็กปิดท้ายสำหรับองค์ประกอบ
<root>
คุณจึงได้รับรหัสข้อผิดพลาดต่อไปนี้steps.xml2json.ExecutionFailed
ข้อผิดพลาดนี้ยังอาจเกิดขึ้นได้หากมีการตั้งค่าองค์ประกอบ
<Source>
ให้ตอบกลับ แต่เพย์โหลดการตอบกลับ XML จากเซิร์ฟเวอร์แบ็กเอนด์ไม่ถูกต้องหรือผิดรูปแบบ
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย XML ไปยังนโยบาย JSON ผ่านองค์ประกอบ <Source>
ถูกต้องและมีรูปแบบไม่ถูกต้อง
หากต้องการแก้ไขปัญหาเกี่ยวกับนโยบาย XML เป็น JSON ตัวอย่างที่กล่าวถึงข้างต้น ให้ส่งคําขอเพย์โหลด XML ที่ถูกต้องดังนี้
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNotAvailable
รหัสข้อผิดพลาด
steps.xml2json.OutputVariableIsNotAvailable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่ระบุในองค์ประกอบ <Source>
ของนโยบาย XML เป็น JSON เป็นสตริงประเภทและไม่ได้กำหนดองค์ประกอบ <OutputVariable>
องค์ประกอบ <OutputVariable>
เป็นองค์ประกอบที่จำเป็นเมื่อตัวแปรที่กำหนดไว้ในองค์ประกอบ <Source>
เป็นประเภท string
การวินิจฉัย
ระบุนโยบาย XML เป็น JSON ที่เกิดข้อผิดพลาด คุณจะดูข้อมูลนี้ได้ในองค์ประกอบ
faultstring
ของคำตอบข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือConvert-XMLToJSON
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
ในนโยบาย XML เป็น JSON ที่ตรวจสอบไม่สําเร็จ ให้ตรวจสอบว่าไม่มี
<OutputVariable>
ต่อไปนี้คือตัวอย่างนโยบาย XML เป็น JSON ที่ขาดองค์ประกอบ
<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>
กำหนดประเภทตัวแปรที่ระบุไว้ในองค์ประกอบ
<Source>
- ค้นหาโค้ดภายในแพ็กเกจพร็อกซี API ที่กำหนดตัวแปรก่อน
- เมื่อคุณทราบว่านโยบายมีการกำหนดและป้อนข้อมูลตัวแปรใดก่อน คุณจะต้องระบุประเภทของตัวแปรนั้นดังนี้
- ตรวจสอบค่าของแอตทริบิวต์ประเภท (หากมี)
- หากไม่มีแอตทริบิวต์ประเภท ระบบจะถือว่าตัวแปรเป็นสตริง
- หากประเภทของตัวแปรคือ
string
นั่นเป็นสาเหตุของข้อผิดพลาด ดูข้อมูลเกี่ยวกับตัวแปรทั่วไปและประเภทของตัวแปรได้ในข้อมูลอ้างอิงเกี่ยวกับตัวแปร
ตัวอย่างเช่น ให้ดูตัวแปร TrackingNumber ในนโยบาย XML เป็น JSON ด้านบน เป็นประเภทสตริง ตอนนี้ ให้พิจารณานโยบาย "กำหนดข้อความ" ที่ใช้กำหนดค่าให้กับตัวแปรชื่อ
TrackingNumber
ดังที่แสดงด้านล่าง<?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>
โปรดทราบว่าประเภทตัวแปรที่ตั้งค่าผ่าน
<AssignVariable>
คือสตริง ดังนั้นตัวแปรTrackingNumber
จึงมีประเภทเป็นสตริงตอนนี้ให้จำได้ว่ามีการใช้ตัวแปร
TrackingNumber
ในองค์ประกอบ<Source>
ของนโยบาย XML เป็น JSON ดังนี้<Source>TrackingNumber</Source>
เนื่องจาก
TrackingNumber
เป็นประเภทสตริงและไม่มี<OutputVariable>
ในนโยบาย คุณจะได้รับรหัสข้อผิดพลาด:steps.xml2json.OutputVariableIsNotAvailable
ความละเอียด
ตรวจสอบว่าหากตัวแปรที่ระบุในองค์ประกอบ <Source>
ของนโยบาย XMLToJSON เป็นสตริงประเภท องค์ประกอบ <OutputVariable>
ในกรณีนี้จำเป็น
หากต้องการแก้ไขนโยบาย XML เป็น JSON ที่กล่าวถึงข้างต้น ให้ใส่องค์ประกอบ <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>
<OutputVariable>response</OutputVariable>
<Source>TrackingNumber</Source>
</XMLToJSON>
InCompatibleTypes
รหัสข้อผิดพลาด
steps.xml2json.InCompatibleTypes
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.InCompatibleTypes"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากประเภทของตัวแปรที่กําหนดไว้ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
ไม่เหมือนกัน ประเภทของตัวแปรที่อยู่ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
ต้องตรงกัน
The valid types are message and string.
การวินิจฉัย
ระบุนโยบาย XML เป็น JSON ที่ทำให้เกิดข้อผิดพลาด ซึ่งดูได้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือXMLToJSON_CheckType
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
บันทึกค่าที่ระบุใน
<OutputVariable>
ในนโยบาย XML เป็น JSON ที่ล้มเหลวต่อไปนี้คือตัวอย่างนโยบาย XMLToJSON ที่ขาดองค์ประกอบ
<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>
ระบุประเภทของตัวแปรที่ระบุในองค์ประกอบ
<Source>
และ<OutputVariable>
ดังนี้- ค้นหาโค้ดภายในแพ็กเกจพร็อกซี API ซึ่งมีการกำหนดตัวแปรเหล่านี้ก่อน
- เมื่อคุณทราบว่านโยบายมีการกำหนดและป้อนข้อมูลตัวแปรใดก่อน คุณจะต้องระบุประเภทของตัวแปรนั้นดังนี้
- ตรวจสอบค่าของแอตทริบิวต์ประเภท (หากมี)
- หากไม่มีแอตทริบิวต์ประเภท ระบบจะถือว่าตัวแปรเป็นสตริง
- หากประเภทของตัวแปรที่ระบุใน
<Source>
คือstring
ขณะที่ประเภท<OutputVariable>
คือข้อความหรือในทางกลับกัน นั่นคือสาเหตุของข้อผิดพลาด ดูข้อมูลเกี่ยวกับตัวแปรทั่วไปและประเภทของตัวแปรได้ในข้อมูลอ้างอิงเกี่ยวกับตัวแปร
ลองดูตัวอย่างนโยบาย "กำหนดข้อความ" ที่ใช้เพื่อตั้งค่าให้กับตัวแปรชื่อ
TrackingNumber
ดังที่แสดงด้านล่าง<?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>
โปรดทราบว่าประเภทตัวแปรที่ตั้งค่าผ่าน
<AssignVariable>
คือสตริง ดังนั้นตัวแปรTrackingNumber
จึงเป็นประเภทสตริงโปรดทราบว่ามีการใช้ตัวแปร
TrackingNumber
ในองค์ประกอบ<Source>
ของนโยบาย XMLToJSON<Source>TrackingNumber</Source>
ในทํานองเดียวกัน โปรดทราบว่าตัวแปร
request
ใช้อยู่ในองค์ประกอบ<OutputVariable>
ของนโยบาย XML เป็น JSON<OutputVariable>request</OutputVariable>
เนื่องจาก
TrackingNumber
เป็นประเภทstring
แต่ตัวแปรresponse
จัดอยู่ในประเภทmessage
ตัวแปรเหล่านี้จึงเป็นประเภทที่ใช้ร่วมกันไม่ได้ ดังนั้นคุณจะได้รับรหัสข้อผิดพลาด:steps.xml2json.InCompatibleTypes
ข้อผิดพลาดข้างต้นยังอาจเกิดขึ้นได้หากตัวแปรในองค์ประกอบ
<Source>
เป็นประเภทmessage
แต่ตัวแปรในองค์ประกอบ<OutputVariable>
เป็นประเภทสตริง
ความละเอียด
ตรวจสอบว่าประเภทของตัวแปรที่กําหนดไว้ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
เหมือนกันเสมอ ประเภทของตัวแปรที่อยู่ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
ต้องตรงกัน
ในการแก้ไขนโยบาย XML เป็น JSON ที่กล่าวถึงข้างต้น คุณสามารถประกาศตัวแปรอื่น TrackingNumber_output
ประเภท string
โดยใช้นโยบาย Assign Message และใช้ตัวแปรนี้ในองค์ประกอบ <OutputVariable>
ของนโยบาย XML เป็น JSON
นโยบายข้อความมอบหมายที่แก้ไขแล้ว
<?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>
นโยบาย XMLToJSON ที่แก้ไขแล้ว
<?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
รหัสข้อผิดพลาด
steps.xml2json.InvalidSourceType
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากประเภทตัวแปรที่ใช้กำหนดองค์ประกอบ <Source>
ไม่ถูกต้อง ประเภทตัวแปรที่ถูกต้องคือ message
และ string
การวินิจฉัย
ระบุประเภทแหล่งที่มาที่ไม่ถูกต้องซึ่งใช้ในนโยบาย XML เป็น JSON คุณดูข้อมูลนี้ได้จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ประเภทที่ไม่ถูกต้องคือจำนวนเต็ม
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
ตรวจสอบนโยบาย XML เป็น JSON ทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด สังเกตชื่อตัวแปรที่ระบุใน
<Source>
ในนโยบาย XML เป็น JSON ที่ล้มเหลว<?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>
ระบุประเภทของตัวแปรที่ระบุในองค์ประกอบ
<Source>
:- ค้นหาโค้ดภายในพาร์ทเนอร์ API ที่กําหนดตัวแปรนี้ไว้ก่อน
- เมื่อทราบนโยบายที่กําหนดตัวแปรและป้อนข้อมูลไว้แล้ว คุณจะต้องระบุประเภทของตัวแปรนั้น ดังนี้
- ตรวจสอบค่าของแอตทริบิวต์ประเภท (หากมี)
- หากไม่มีแอตทริบิวต์ประเภท ระบบจะถือว่าตัวแปรเป็นสตริง
- หากประเภทของตัวแปรที่ระบุใน
<Source>
ไม่ใช่ประเภทmessage
หรือstring
นั่นเป็นสาเหตุของข้อผิดพลาด ดูข้อมูลเกี่ยวกับตัวแปรทั่วไปและประเภทของตัวแปรได้ในข้อมูลอ้างอิงเกี่ยวกับตัวแปร
ลองดูตัวอย่างจากนโยบาย ExtractVariable ที่ใช้ในการดึงค่าจากเพย์โหลด XML และกำหนดค่าเป็นตัวแปร
BookCode
ให้เป็นประเภทinteger
ดังที่แสดงด้านล่าง<?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>
โปรดทราบว่าตัวแปร
BookCode
ใช้อยู่ในองค์ประกอบ<Source>
ของนโยบาย XML เป็น JSON<Source>BookCode</Source>
เนื่องจากประเภทของตัวแปรนี้คือ
Integer
ซึ่งไม่ใช่ประเภท<Source>
ที่ถูกต้อง พร็อกซี API จึงทำงานล้มเหลวโดยมีข้อผิดพลาดดังนี้steps.xml2json.InvalidSourceType
ความละเอียด
ตรวจสอบว่าประเภทของตัวแปรที่ใช้ระบุองค์ประกอบ <Source>
ถูกต้อง ประเภท <Source>
ที่ถูกต้องคือ message
และ string
เพื่อหลีกเลี่ยงข้อผิดพลาดข้างต้นในนโยบาย XML เป็น JSON คุณสามารถใช้ตัวแปร request
ที่เป็นประเภท message
หรือสตริงอื่นๆ ที่เป็นเพย์โหลด XML ที่ถูกต้อง