คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากตัวแปรข้อความหรือสตริงที่ระบุในองค์ประกอบ <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 ของนโยบาย 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 ที่แสดงด้านบนควรจะดำเนินการในโฟลว์คำขอ โปรดทราบว่าใช้ตัวแปร
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 ไม่ถูกต้องหรือมีรูปแบบไม่ถูกต้อง |
สาเหตุ: ไม่มีเพย์โหลดอินพุต
ในนโยบาย XML เป็น JSON หากเนื้อหา (เพย์โหลด) ของตัวแปรที่ระบุในองค์ประกอบ <Source> ว่างเปล่า ข้อผิดพลาดนี้จะเกิดขึ้น
ตัวอย่างเช่น หากตั้งค่าองค์ประกอบ <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>เป็นการตอบกลับ แต่เซิร์ฟเวอร์แบ็กเอนด์ส่งเพย์โหลดที่ว่างเปล่า
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย 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 ที่ไม่ถูกต้องต่อไปนี้ไปยังนโยบาย Extract Variables ผ่านไฟล์
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 ด้านบน โดยมีประเภทเป็นสตริง ตอนนี้ ให้พิจารณานโยบาย Assign Message ที่ใช้ในการตั้งค่าให้กับตัวแปรที่ชื่อ
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."ในหมายเหตุนโยบาย XML เป็น JSON ที่ล้มเหลว ให้สังเกตค่าที่ระบุใน
<OutputVariable>ต่อไปนี้คือตัวอย่างนโยบาย 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>เป็นข้อความหรือในทางกลับกัน นั่นคือสาเหตุของข้อผิดพลาด คุณดูตัวแปรที่ใช้กันทั่วไปและประเภทของตัวแปรได้ในข้อมูลอ้างอิงตัวแปร
ตัวอย่างเช่น พิจารณานโยบาย Assign Message ที่ใช้ตั้งค่าให้กับตัวแปรชื่อ
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 โดยใช้นโยบายการกำหนดข้อความ และใช้ตัวแปรนี้ในองค์ประกอบ <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 ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด ในหมายเหตุเกี่ยวกับนโยบาย XML เป็น JSON ที่ล้มเหลว ให้จดชื่อตัวแปรที่ระบุใน
<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>กำหนดประเภทตัวแปรที่ระบุในองค์ประกอบ
<Source>ดังนี้- ค้นหาโค้ดภายในชุดพร็อกซี API ซึ่งเป็นที่ที่กำหนดตัวแปรนี้เป็นครั้งแรก
- เมื่อทราบแล้วว่านโยบายใดที่กำหนดและป้อนค่าตัวแปรก่อน คุณต้องกำหนดประเภทของตัวแปรนั้นดังนี้
- ตรวจสอบค่าของแอตทริบิวต์ประเภท (หากมี)
- หากไม่มีแอตทริบิวต์ประเภท ระบบจะถือว่าตัวแปรเป็นสตริง
- หากประเภทของตัวแปรที่ระบุใน
<Source>ไม่ใช่ประเภทmessageหรือstringแสดงว่านั่นคือสาเหตุของข้อผิดพลาด คุณดูตัวแปรที่ใช้กันทั่วไปและประเภทของตัวแปรได้ในข้อมูลอ้างอิงตัวแปร
ตัวอย่างเช่น พิจารณานโยบาย ExtractVariables ที่ใช้ในการดึงค่าจากเพย์โหลด 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 ที่ถูกต้อง