คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
SourceMessageNotAvailable
รหัสข้อผิดพลาด
steps.messagevalidation.SourceMessageNotAvailable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "source_var_name message is not available for[policy_name]", "detail": { "Errorcode": "steps.messagevalidation.SourceMessageNotAvailable" } } }
ตัวอย่างเนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1",
"detail": {
"errorcode": "steps.messagevalidation.SourceMessageNotAvailable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message ที่ระบุในองค์ประกอบ <Source>
ของนโยบาย SOAPMessageValidation ดังต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในขั้นตอนที่นโยบายจะทำงาน) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Source>
ในนโยบาย SOAPMessageValidation ได้รับการตั้งค่าเป็นตัวแปรที่ไม่อยู่ในขั้นตอนที่มีการบังคับใช้นโยบาย
การวินิจฉัย
ระบุชื่อนโยบาย SOAPMessageValidation ที่ทำให้เกิดข้อผิดพลาดและชื่อตัวแปร
source
จากสตริงข้อบกพร่อง ตัวอย่างเช่น ในสตริงข้อบกพร่องต่อไปนี้ ชื่อนโยบาย SOAPMessageValidation คือSOAP-Message-Validation-1
และตัวแปรsource
คือrequest
"faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1"
ใน XML นโยบาย SOAPMessageValidation ที่ดำเนินการไม่สำเร็จ ให้ตรวจสอบว่าชื่อตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุไว้ในสตริงข้อบกพร่อง (ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบาย SOAPMessageValidation ต่อไปนี้ระบุตัวแปรชื่อ
request
ในองค์ประกอบ<Source>
ซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>xsd://Script-1.xsd</ResourceURL> </MessageValidation>
ตรวจสอบว่าตัวแปรที่ใช้ในองค์ประกอบ
<Source>
ได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่มีการดำเนินการนโยบาย SOAPMessageValidation หรือไม่หากตัวแปรเป็นค่าใดค่าหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
แสดงว่านี่อาจเป็นสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบาย SOAPMessageValidation ที่แสดงด้านบนจะทำงานในขั้นตอนการตอบกลับ อย่างไรก็ตาม ตัวแปร
request
ที่ใช้ในตัวอย่างองค์ประกอบ<Source>
ด้านบนจะใช้ได้ในขั้นตอนคำขอเท่านั้นเนื่องจากไม่มีตัวแปร
request
ในขั้นตอนการตอบกลับ คุณจึงได้รับข้อผิดพลาดต่อไปนี้"faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1"
ความละเอียด
ตรวจสอบว่าได้กำหนดตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ <Source>
ของนโยบาย SOAPMessageValidation ไม่สำเร็จและมีอยู่ในโฟลว์ที่นโยบายทำงาน
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <Source
> เพื่อใช้ตัวแปร response
ซึ่งมีอยู่ในขั้นตอนการตอบกลับ ดังนี้
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
<DisplayName>SOAP Message Validation-1</DisplayName>
<Properties/>
<Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
<SOAPMessage/>
<Source>response</Source>
<ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>
NonMessageVariable
รหัสข้อผิดพลาด
steps.messagevalidation.NonMessageVariable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.messagevalidation.NonMessageVariable" } } }
ตัวอย่างเนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.messagevalidation.NonMessageVariable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งองค์ประกอบ <Source>
ในนโยบาย SOAPMessageValidation เป็นตัวแปรที่ไม่ใช่ประเภท Message
ตัวแปรประเภทข้อความแสดงคำขอ HTTP และการตอบกลับทั้งหมด ตัวแปรโฟลว์ Apigee Edge ในตัว request
, response
และ message
เป็นประเภทข้อความ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรข้อความได้ที่ข้อมูลอ้างอิงเกี่ยวกับตัวแปร
การวินิจฉัย
ระบุชื่อตัวแปรที่ไม่สามารถแก้ไขเป็นประเภทข้อความจากสตริงข้อบกพร่อง ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อของตัวแปรคือ
message.content
"faultstring": "Variable message.content does not resolve to a Message"
ตรวจสอบนโยบาย SOAPMessageValidation ทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด อาจมีนโยบาย SOAPMessageValidation อย่างน้อย 1 นโยบาย ระบุนโยบาย SOAPMessageValidation หรือนโยบายที่ตัวแปรที่ระบุในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าองค์ประกอบ
<Source>
เป็นตัวแปรที่ชื่อmessage.content
ซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element> <SOAPMessage/> <Source>message.content</Source> <ResourceURL>xsd://Script-1.xsd</ResourceURL> </MessageValidation>
เนื่องจากตัวแปร
message.content
ไม่ใช่ประเภท "ข้อความ" คุณจะได้รับข้อผิดพลาด:"faultstring": "Variable message.content does not resolve to a Message"
ความละเอียด
ตรวจสอบว่าองค์ประกอบ <Source>
ในนโยบาย SOAPMessageValidation ที่ดำเนินการไม่สำเร็จได้รับการตั้งค่าเป็นตัวแปรประเภท Message ที่มีอยู่ในโฟลว์ที่นโยบายทำงาน
หากต้องการแก้ไขนโยบาย ให้แก้ไของค์ประกอบ <Source>
เพื่อระบุตัวแปรที่เป็นประเภทข้อความ ตัวอย่างเช่น ในนโยบาย SOAPMessageValidation ที่ล้มเหลว
คุณสามารถระบุองค์ประกอบ <Source>
เป็น request
ดังนี้
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
<DisplayName>SOAP Message Validation-1</DisplayName>
<Properties/>
<Element namespace="http://sample.com"> sampleObject</Element>
<SOAPMessage/>
<Source>request</Source>
<ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>
ไม่สำเร็จ
รหัสข้อผิดพลาด
steps.messagevalidation.Failed
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Variable var_name failed with reason: \"reason [Line varline_num "detail": { "errorcode": "steps.messagevalidation.Failed" } } }
ตัวอย่างเนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\"",
"detail": {
"errorcode": "steps.messagevalidation.Failed"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากนโยบาย SOAPMessageValidation ตรวจสอบเพย์โหลดข้อความอินพุตเทียบกับสคีมา XSD หรือคําจํากัดความ WSDL ไม่สําเร็จ และจะเกิดขึ้นด้วยหากมี JSON หรือ XML ผิดรูปแบบในข้อความเพย์โหลด
สาเหตุที่เป็นไปได้ซึ่งอาจทําให้ข้อผิดพลาดนี้เกิดขึ้นมีดังนี้
สาเหตุ | คำอธิบาย |
เพย์โหลด XML ไม่ตรงกัน | เพย์โหลด XML อินพุตไม่เป็นไปตามสคีมา XSD ที่ระบุไว้ในนโยบาย SoapMessageValidation |
เพย์โหลด SOAP ที่ไม่ตรงกัน | เพย์โหลด SOAP อินพุตไม่เป็นไปตามคำจำกัดความ WSDL ที่ระบุไว้ในนโยบาย SoapMessageValidation |
JSON หรือ XML มีรูปแบบไม่ถูกต้อง | เพย์โหลด SOAP อินพุตไม่มี XML หรือ JSON ที่มีรูปแบบถูกต้อง |
สาเหตุ: เพย์โหลด XML ไม่ตรงกัน
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด XML อินพุตไม่เป็นไปตามสคีมา XSD ที่ระบุไว้ในองค์ประกอบ <ResourceURL>
ของนโยบาย SoapMessageValidation
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\"",
"detail": {
"errorcode": "steps.messagevalidation.Failed"
}
}
}
การวินิจฉัย
ระบุชื่อนโยบาย SOAPMessageValidation, สาเหตุของความล้มเหลว และหมายเลขบรรทัดที่เพย์โหลด XML ไม่ตรงกับสคีมา XSD ข้อมูลทั้งหมดนี้อยู่ในสตริงข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบาย SOAPMessageValidation คือ
SOAP-Message-Validation-1,
สาเหตุของความล้มเหลวคือExpecting a child element but found none [Line 9]
และหมายเลขบรรทัดคือ9
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\""
ตรวจสอบนโยบาย SOAPMessageValidation และยืนยันว่านโยบายใช้ไฟล์การกำหนดสคีมา XSD เพื่อตรวจสอบข้อความ ตัวอย่างเช่น นโยบาย SOAPMessageValidation ต่อไปนี้มีไฟล์ทรัพยากร XSD ในองค์ประกอบ
<ResourceURL>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <SOAPMessage/> <Source>request</Source> <ResourceURL>xsd://Script-1.xsd</ResourceURL> </MessageValidation>
ตรวจสอบเพย์โหลดอินพุตในหมายเลขบรรทัดที่ระบุไว้ในขั้นตอนที่ 1 ด้านบนเพื่อทำความเข้าใจสาเหตุที่ทำให้เกิดข้อผิดพลาด
ตัวอย่างเพย์โหลด XML ของอินพุต
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soap:Body> <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"> <shipTo> <name>Karl Kalckstein</name> </shipTo> <items> <item> <title>I love APIs</title> <quantity>1</quantity> <price>2.90</price> </item> </items> </shipOrder> </soap:Body> </soap:Envelope>
ในตัวอย่างที่แสดงด้านบน บรรทัดที่ 9 มีแท็กปิด
</shipTo>
ตรวจสอบไฟล์คําจํากัดความสคีมา XML
Script-1.xsd
ที่ใช้ในนโยบาย SOAPMessageValidation เพื่อดูว่าองค์ประกอบ<shipTo>
ควรมีลักษณะอย่างไร... <xsd:element name="shipTo" type="shipAddress"/> ... <xsd:complexType name="shipAddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="address" type="xsd:string"/> <xsd:element name="country" type="xsd:string"/> </xsd:sequence> </xsd:complexType> ...
ตาม XSD ตัวอย่างที่ใช้ตรวจสอบ องค์ประกอบ
<shipTo>
ต้องมีองค์ประกอบย่อย<name>
,<street>
,<address>
และ<country>
แต่เพย์โหลด XML อินพุตมีองค์ประกอบย่อย<name>
เพียง 1 รายการ คุณจึงได้รับข้อผิดพลาด"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\""
ความละเอียด
การแก้ไขข้อผิดพลาดในการตรวจสอบความถูกต้องนี้ทำได้ 2 วิธี ดังนี้
Solution #1
หากพิจารณาแล้วว่าการกำหนดสคีมา XSD มีขีดจำกัดที่ไม่จำเป็น และจำเป็นต้องใช้องค์ประกอบย่อย <name>
เท่านั้นในองค์ประกอบ <shipTo>
คุณจะแก้ไข Script-1.xsd
ที่ใช้ในนโยบาย SOAPMessageValidation ได้ ในการตรวจสอบตัวอย่างเพย์โหลดด้านบน ให้แก้ไขไฟล์ XSD ดังนี้
...
<xsd:element name="shipTo" type="shipAddress"/>
...
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
โซลูชันที่ 2
หากไฟล์คําจํากัดความ XSD ถูกต้อง คุณสามารถเปลี่ยนเพย์โหลด XML อินพุตให้ตรงกับ xsd
ได้ เช่น คุณอาจแก้ไขเพย์โหลดให้เป็นไปตาม xsd
ดังนี้
<?xml version="1.0">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
<shipTo>
<name>Karl Kalckstein</name>
<street>1020 Parkway</street>
<address>Mountain View, CA 94043</address>
<country>USA</country>
</shipTo>
<items>
<item>
<title>I love APIs</title>
<quantity>1</quantity>
<price>2.90</price>
</item>
</items>
</shipOrder>
</soap:Body>
</soap:Envelope>
สาเหตุ: เพย์โหลด SOAP ไม่ตรงกัน
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด SOAP ของอินพุตไม่เป็นไปตามคำจำกัดความ WSDL ที่ระบุไว้ในองค์ประกอบ <ResourceURL>
ของนโยบาย SoapMessageValidation
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\"",
"detail": {
"errorcode": "steps.messagevalidation.Failed"
}
}
}
การวินิจฉัย
ระบุชื่อนโยบาย SOAPMessageValidation สาเหตุของความล้มเหลวและหมายเลขบรรทัดที่เพย์โหลด SOAP ไม่ตรงกับคำจำกัดความ WSDL คุณดูข้อมูลทั้งหมดนี้ได้จากสตริงข้อบกพร่อง ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบาย SOAPMessageValidation คือ
SOAP-Message-Validation-1
สาเหตุของความล้มเหลวคือ\"Element name mismatch. Wildcard? [Line 11]\""
และหมายเลขบรรทัดคือ11
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\""
ตรวจสอบนโยบาย SOAPMessageValidation และยืนยันว่านโยบายใช้สคีมา
wsdl
เพื่อตรวจสอบความถูกต้องของข้อความ ตัวอย่างเช่น นโยบาย SOAPMessageValidation ต่อไปนี้มีไฟล์ทรัพยากรwsdl
ในองค์ประกอบ<ResourceURL>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <SOAPMessage/> <Source>request</Source> <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL> </MessageValidation>
ตรวจสอบเพย์โหลดอินพุตในหมายเลขบรรทัดที่ระบุไว้ในขั้นตอนที่ 1 เพื่อให้ทราบสาเหตุที่ทำให้เกิดข้อผิดพลาด
เพย์โหลด SOAP ตัวอย่างอินพุต
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soap:Body> <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"> <shipTo> <name>Karl Kalckstein</name> <street>1020 Parkway</street> <address>Mountain View, CA 94043</address> <country>USA</country> </shipTo> <items> <item> <title>I love APIs</title> <quantity>1</quantity> <price>2.90</price> </item> </items>
ในตัวอย่างที่แสดงด้านบน บรรทัดที่ 11 มีองค์ประกอบย่อย
<country>
อยู่ภายใต้องค์ประกอบ<shipTo>
ตรวจสอบไฟล์คำจำกัดความ WSDL ชื่อ
SOAP-Message-Validation-1.wsdl
ที่ใช้ในนโยบาย SOAPMessageValidation เพื่อดูข้อผิดพลาดในองค์ประกอบย่อย<country>
ภายใต้องค์ประกอบ<shipTo>
ดังนี้<?xml version="1.0" encoding="ISO-8859-1"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="shipOrder" type="order"/> <xsd:complexType name="order"> <xsd:sequence> <xsd:element name="shipTo" type="shipAddress"/> <xsd:element name="items" type="cdItems"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="shipAddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="address" type="xsd:string"/> </xsd:sequence> ...
ตามคำจำกัดความ WSDL ที่ใช้ตรวจสอบ องค์ประกอบ
<shipTo>
ไม่มีองค์ประกอบย่อย<country>
ด้วยเหตุนี้ คุณจึงได้รับข้อผิดพลาดต่อไปนี้"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\""
ความละเอียด
การแก้ไขข้อผิดพลาดในการตรวจสอบความถูกต้องนี้ทำได้ 2 วิธี ดังนี้
โซลูชันที่ 1
หากพิจารณาว่าคําจํากัดความ WSDL ที่ใช้ไม่ถูกต้อง คุณสามารถเปลี่ยน SOAP-Message-Validation-1.wsdl
ที่ใช้ในนโยบาย SOAPMessageValidation ได้ หากต้องการตรวจสอบตัวอย่างเพย์โหลดข้างต้น คุณสามารถแก้ไขไฟล์ได้ดังนี้
...
<xsd:complexType name="shipAddress">`
...
<sequence>
<element name="name" type="xsd:string"/>
<element name="street" type="xsd:string"/>
<element name="address" type="xsd:string"/>
<element name="country" type="xsd:string"/>
</sequence>
โซลูชันที่ 2
หากคำจำกัดความ WSDL ถูกต้อง คุณจะเปลี่ยนเพย์โหลด SOAP ของอินพุตให้ตรงกับคำจำกัดความ WSDL ได้
ตัวอย่างเช่น คุณสามารถแก้ไขเพย์โหลด SOAP ของอินพุตได้ดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
<shipTo>
<name>Karl Kalckstein</name>
<street>1020 Parkway</street>
<address>Mountain View, CA 94043</address>
</shipTo>
<items>
<item>
<title>I love APIs</title>
<quantity>1</quantity>
<price>2.90</price>
</item>
</items>
สาเหตุ: JSON หรือ XML มีรูปแบบไม่ถูกต้อง
ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด SOAP ของอินพุตไม่เป็นไปตามคำจำกัดความ WSDL ที่ระบุไว้ในองค์ประกอบ <ResourceURL>
ของนโยบาย SoapMessageValidation
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expected <\/title> at line 15(possibly around char 420)\"",
"detail": {
"errorcode": "steps.messagevalidation.Failed"
}
}
}
การวินิจฉัย
ระบุชื่อนโยบาย SOAPMessageValidation, สาเหตุของการไม่ผ่านการตรวจสอบ และหมายเลขบรรทัดของเพย์โหลด XML ที่ไม่ตรงกับคำจำกัดความ WSDL คุณสามารถดูข้อมูลทั้งหมดนี้ได้ในสตริงข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบาย SOAPMessageValidation คือ
SOAP-Message-Validation-1
สาเหตุของความล้มเหลวคือExpected </title> at line 15(possibly around char 420):
และหมายเลขบรรทัดคือ15.
"faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expected </title> at line 15(possibly around char 420)\""
ตรวจสอบเพย์โหลดอินพุตในหมายเลขบรรทัดที่ระบุไว้ในขั้นตอนที่ 1 ด้านบนเพื่อทำความเข้าใจสาเหตุที่ทำให้เกิดข้อผิดพลาด
เพย์โหลด SOAP ตัวอย่างอินพุต
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soap:Body> <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"> <shipTo> <name>Karl Kalckstein</name> <street>1020 Parkway</street> <address>Mountain View, CA 94043</address> <country>USA</country> </shipTo> <items> <item> <title>I love APIs</titles> <quantity>1</quantity> <price>2.90</price> </item> </items> </shipOrder> </soap:Body> </soap:Envelope>
ในตัวอย่างที่แสดงด้านบน บรรทัด 15 ของ XML อินพุตมีองค์ประกอบ
<title>
แต่ไม่ได้ปิดด้วยแท็กปิด</title>
ความละเอียด
หากต้องการแก้ไขข้อผิดพลาด ให้ตรวจสอบว่าเพย์โหลดอินพุตถูกต้องและมีรูปแบบถูกต้อง
ตัวอย่างเช่น คุณสามารถแก้ไขเพย์โหลด XML อินพุตดังนี้
...
</shipTo>
<items>
<item>
<title>I love APIs</title>
<quantity>1</quantity>
<price>2.90</price>
</item>
</items>
...