לפני מספר ימים פנה אליי עמית לעבודה עם תופעה מוזרה בקבצים שיוצרו באמצעות gSOAP.
הבעיה הייתה שטיפוסים מורכבים (ComplexType) בהודעות לא הכילו את מרחב השמות (namespace) ברירת המחדל של הרכיב.
הפעולה התבצעה ע"י wsdl2h -c filename.wsdl
במקום לקבל :
<SOAP-ENV:Body>
<ns1:typename>
<fieldname>
<ns2:typename1>text value</ns2:typename1>
<ns2:typename2>true</ns2:typename2>
<ns2:typename3>6308880000</ns2:typename3>
</fieldname>
</ns1:typename>
</SOAP-ENV:Body>
התקבל:
<SOAP-ENV:Body>
<ns1:typename>
<ns1:fieldname>
<ns2:typename1>text value</ns2:typename1>
<ns2:typename2>true</ns2:typename2>
<ns2:typename3>6308880000</ns2:typename3>
</ns1:fieldname>
</ns1:typename>
</SOAP-ENV:Body>
הפתרון לבעיה פשוט - יש להכריז כי מרחב השמות ברירת המחדל יהיה qualified (תמיד יכיל את מרחב השמות).
פעולה זה מתבצעת ע"י שינוי בקובץ ההכרזה :
נ.ב. קובץ הסכמה הגדיר את מרחב שמות המרחב כראוי :
elementFormDefault="qualified"
הבעיה הייתה שטיפוסים מורכבים (ComplexType) בהודעות לא הכילו את מרחב השמות (namespace) ברירת המחדל של הרכיב.
הפעולה התבצעה ע"י wsdl2h -c filename.wsdl
במקום לקבל :
<ns1:typename>
<fieldname>
<ns2:typename1>text value</ns2:typename1>
<ns2:typename2>true</ns2:typename2>
<ns2:typename3>6308880000</ns2:typename3>
</fieldname>
</ns1:typename>
</SOAP-ENV:Body>
התקבל:
<SOAP-ENV:Body>
<ns1:typename>
<ns1:fieldname>
<ns2:typename1>text value</ns2:typename1>
<ns2:typename2>true</ns2:typename2>
<ns2:typename3>6308880000</ns2:typename3>
</ns1:fieldname>
</ns1:typename>
</SOAP-ENV:Body>
הפתרון לבעיה פשוט - יש להכריז כי מרחב השמות ברירת המחדל יהיה qualified (תמיד יכיל את מרחב השמות).
פעולה זה מתבצעת ע"י שינוי בקובץ ההכרזה :
#define SOAP_NAMESPACE_OF_ns1 "http://myrtfm.blogspot.com/soap/ServiceName" //gsoap ns1 schema namespace: http://myrtfm.blogspot.com/soap/ServiceName //gsoap ns1 schema form: unqualifiedל:
#define SOAP_NAMESPACE_OF_ns1 "http://myrtfm.blogspot.com/soap/ServiceName" //gsoap ns1 schema namespace: http://myrtfm.blogspot.com/soap/ServiceName //gsoap ns1 schema form: qualified
נ.ב. קובץ הסכמה הגדיר את מרחב שמות המרחב כראוי :
elementFormDefault="qualified"
אין תגובות:
הוסף רשומת תגובה