आपको 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"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब एक्सएमएल के <Source>
एलिमेंट में तय किया गया मैसेज या स्ट्रिंग वैरिएबल, JSON नीति में इनमें से कोई एक हो:
- दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)
उदाहरण के लिए, यह गड़बड़ी तब होती है, जब अनुरोध फ़्लो में एक्सएमएल से JSON में बदलने की नीति को लागू किया जाना है, लेकिन <Source>
एलिमेंट को response
वैरिएबल पर सेट किया गया है, जो अनुरोध फ़्लो में मौजूद नहीं है.
संक्रमण की जांच
एक्सएमएल से JSON नीति की उस जगह की पहचान करें जहां गड़बड़ी हुई. साथ ही, उस वैरिएबल के नाम की भी पहचान करें जो उपलब्ध नहीं है. ये दोनों आइटम, गड़बड़ी के रिस्पॉन्स के
faultstring
एलिमेंट में देखे जा सकते हैं. उदाहरण के लिए, यहां दिए गएfaultstring
में, नीति का नामConvert-XMLToJSON
है और वैरिएबलresponse
है:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
एक्सएमएल से JSON में बदलने की नीति वाले एक्सएमएल में, पुष्टि करें कि
<Source>
एलिमेंट में सेट किए गए वैरिएबल का नाम, गड़बड़ी वाली स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए वैरिएबल के नाम से मेल खाता हो. उदाहरण के लिए, नीचे दी गई एक्सएमएल से जुड़ी JSON नीति,<Source>
एलिमेंट मेंresponse
नाम के वैरिएबल के बारे में बताती है, जो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>
एलिमेंट में इस्तेमाल किए गए वैरिएबल को तय किया गया है या नहीं. साथ ही, यह भी पता लगाएं कि वह उस फ़्लो में उपलब्ध है या नहीं जिसमें एक्सएमएल से JSON में बदलने की नीति लागू की जा रही है.अगर वैरिएबल:
- दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)
तो यह गड़बड़ी की वजह है.
उदाहरण के लिए, मान लें कि ऊपर दिखाई गई एक्सएमएल से JSON में बदलने की नीति को अनुरोध फ़्लो में लागू किया जाना है. याद रखें कि
response
वैरिएबल का इस्तेमाल, एक्सएमएल से JSON में बदलने की नीति के<Source>
एलिमेंट में किया जाता है. रिस्पॉन्स वैरिएबल सिर्फ़ रिस्पॉन्स फ़्लो में उपलब्ध होता है.अनुरोध फ़्लो में रिस्पॉन्स वैरिएबल मौजूद न होने की वजह से, आपको गड़बड़ी का कोड मिलता है:
steps.xml2json.SourceUnavailable
रिज़ॉल्यूशन
पक्का करें कि एक्सएमएल से JSON में बदलने की नीति के <Source>
एलिमेंट में सेट किया गया वैरिएबल, उस फ़्लो में मौजूद हो जहां नीति लागू होती है.
ऊपर दिए गए एक्सएमएल से 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" } } }
संभावित कारण
इस गड़बड़ी की ये वजहें हो सकती हैं:
Cause | जानकारी |
इनपुट पेलोड मौजूद नहीं है | इनपुट पेलोड (एक्सएमएल) खाली है. |
अमान्य या गलत फ़ॉर्मैट वाला इनपुट | एक्सएमएल से JSON में बदलने की नीति के लिए दिया गया इनपुट (एक्सएमएल) अमान्य या गलत है. |
वजह: इनपुट पेलोड मौजूद नहीं है
एक्सएमएल से JSON नीति में, अगर <Source>
एलिमेंट में बताए गए वैरिएबल का कॉन्टेंट (पेलोड) खाली है, तो यह गड़बड़ी दिखती है.
उदाहरण के लिए, अगर एक्सएमएल से JSON में बदलने की नीति में <Source>
एलिमेंट को request
या response
वैरिएबल के तौर पर सेट किया गया है और इसमें एक्सएमएल पेलोड होना चाहिए, तो पेलोड खाली होने पर यह गड़बड़ी दिखती है.
संक्रमण की जांच
उस एक्सएमएल से 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)"
एक्सएमएल से JSON में बदलने की नीति के एक्सएमएल में मौजूद
<Source>
एलिमेंट की जांच करें और बताए गए वैरिएबल का पता लगाएं. उदाहरण के लिए, एक्सएमएल से 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>
देखें कि XMLToJSON नीति में
<Source>
एलिमेंट के लिए तय किया गया वैरिएबल खाली है या नहीं. अगर यह फ़ील्ड खाली है, तो गड़बड़ी की यही वजह है.ऊपर दिए गए एक्सएमएल से JSON में बदलने की नीति के उदाहरण में, क्लाइंट से भेजा गया अनुरोध पेलोड (यानी, अनुरोध बॉडी) खाली था.
उदाहरण के लिए:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
एक्सएमएल अनुरोध पेलोड खाली होने की वजह से, आपको गड़बड़ी का कोड मिलता है:
steps.xml2json.ExecutionFailed
यह गड़बड़ी तब भी आ सकती है, जब
<Source>
एलिमेंट रिस्पॉन्स के लिए सेट हो, लेकिन बैकएंड सर्वर ने खाली पेलोड पास किया हो.
रिज़ॉल्यूशन
पक्का करें कि <Source>
एलिमेंट के ज़रिए, एक्सएमएल से JSON में बदलने की नीति को दिया गया इनपुट, मान्य एक्सएमएल पेलोड हो और खाली न हो.
JSON नीति के सैंपल एक्सएमएल से जुड़ी समस्या को ठीक करने के लिए, मान्य एक्सएमएल पेलोड पास करें. उदाहरण के लिए:
City.xml नाम की एक फ़ाइल बनाएं, जिसमें ये कॉन्टेंट शामिल हों:
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
cURL निर्देश का इस्तेमाल करके, इस तरह एपीआई कॉल करें:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
वजह: अमान्य या गलत इनपुट
अगर एक्सएमएल से JSON में बदलने की नीति, अमान्य या गलत फ़ॉर्मैट वाले इनपुट को पार्स करती है, तो आपको यह गड़बड़ी दिखती है.
उदाहरण के लिए, अगर एक्सएमएल से 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)"
संक्रमण की जांच
उस एक्सएमएल से 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)"
एक्सएमएल से JSON में बदलने से जुड़ी नीति के एक्सएमएल में बताए गए
<Source>
एलिमेंट की जांच करें. उदाहरण के लिए, एक्सएमएल से 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>
पुष्टि करें कि एक्सएमएल से JSON में बदलने की नीति के
<Source>
एलिमेंट में दिया गया इनपुट, मान्य एक्सएमएल पेलोड है या नहीं. अगर इनपुट अमान्य या गलत है, तो यह गड़बड़ी की वजह है.ऊपर दिए गए एक्सएमएल से JSON में बदलने की नीति के उदाहरण में,
city.xml
फ़ाइल के ज़रिए, वैरिएबल निकालने की नीति में यह अमान्य एक्सएमएल पास किया गया था:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
यहां एपीआई कॉल का सैंपल दिया गया है, जिससे पता चलता है कि अनुरोध कैसे पास किया गया था:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
एपीआई को भेजा गया एक्सएमएल पेलोड अमान्य है, क्योंकि एक्सएमएल में
<root>
एलिमेंट के लिए कोई एंड टैग नहीं है. इसलिए, आपको गड़बड़ी का यह कोड मिलता है:steps.xml2json.ExecutionFailed
यह गड़बड़ी तब भी आ सकती है, जब
<Source>
एलिमेंट को रिस्पॉन्स के लिए सेट किया गया हो, लेकिन बैकएंड सर्वर से मिलने वाला एक्सएमएल रिस्पॉन्स पेलोड अमान्य या गलत हो.
रिज़ॉल्यूशन
पक्का करें कि <Source>
एलिमेंट की मदद से, एक्सएमएल से JSON में बदलने की नीति को दिया गया इनपुट मान्य हो और उसका फ़ॉर्मैट सही हो.
ऊपर बताई गई JSON नीति के सैंपल से जुड़ी समस्या को ठीक करने के लिए, मान्य एक्सएमएल पेलोड अनुरोध को इस तरह से पास करें:
<?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"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब एक्सएमएल से JSON में बदलने की नीति के <Source>
एलिमेंट में तय किया गया वैरिएबल स्ट्रिंग टाइप का हो और <OutputVariable>
एलिमेंट तय न किया गया हो. अगर <Source>
एलिमेंट में तय किया गया वैरिएबल string
टाइप का है, तो <OutputVariable>
एलिमेंट देना ज़रूरी है.
संक्रमण की जांच
एक्सएमएल की उस JSON नीति की पहचान करें जिसमें गड़बड़ी हुई है. आपको यह गड़बड़ी के जवाब के
faultstring
एलिमेंट में दिखेगा. उदाहरण के लिए, यहां दिए गएfaultstring
में, नीति का नामConvert-XMLToJSON
है:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
XML से JSON में बदलने की नीति में, पुष्टि करें कि
<OutputVariable>
मौजूद है या नहीं.यहां 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>
एलिमेंट में बताए गए वैरिएबल का टाइप तय करें:- एपीआई प्रॉक्सी बंडल में कोड का पता लगाएं, जहां वैरिएबल को पहले तय किया गया था.
- जिस नीति में वैरिएबल को पहले से तय और पॉप्युलेट किया गया है उसे ढूंढने के बाद, आपको उस वैरिएबल का टाइप इस तरह से तय करना होगा:
- अगर मौजूद है, तो टाइप एट्रिब्यूट की वैल्यू देखें.
- अगर एट्रिब्यूट का टाइप मौजूद नहीं है, तो वैरिएबल को एक स्ट्रिंग माना जाता है.
- अगर वैरिएबल का टाइप
string
है, तो गड़बड़ी की वजह यही है. वैरिएबल रेफ़रंस में, सामान्य वैरिएबल और उनके टाइप के बारे में जाना जा सकता है.
उदाहरण के लिए, ऊपर दिए गए एक्सएमएल में, JSON नीति के लिए TrackingNumber वैरिएबल देखें. यह स्ट्रिंग टाइप का होता है. अब, 'मैसेज असाइन करें' नीति पर विचार करें, जिसका इस्तेमाल
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
वैरिएबल का इस्तेमाल, एक्सएमएल से JSON में बदलने की नीति के<Source>
एलिमेंट में किया जाता है:<Source>TrackingNumber</Source>
TrackingNumber
स्ट्रिंग टाइप का है और नीति में<OutputVariable>
मौजूद नहीं है, इसलिए आपको गड़बड़ी का कोड मिलता है:steps.xml2json.OutputVariableIsNotAvailable
रिज़ॉल्यूशन
पक्का करें कि अगर XMLToJSON नीति के <Source>
एलिमेंट में दिया गया वैरिएबल स्ट्रिंग टाइप का है, तो इस मामले में <OutputVariable>
एलिमेंट ज़रूरी है.
ऊपर बताई गई, एक्सएमएल से जुड़ी 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.
संक्रमण की जांच
एक्सएमएल की उस JSON नीति की पहचान करें जिसमें गड़बड़ी हुई है. आपको यह गड़बड़ी के जवाब के
faultstring
एलिमेंट में दिखेगा. उदाहरण के लिए, यहां दिए गएfaultstring
में, नीति का नामXMLToJSON_CheckType
है:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
फ़ेल होने वाली एक्सएमएल टू 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>
एलिमेंट में बताए गए वैरिएबल का टाइप तय करें:- एपीआई प्रॉक्सी बंडल में वह कोड ढूंढें जहां इनमें से हर वैरिएबल को पहले तय किया गया था.
- जिस नीति में वैरिएबल को तय और भरा गया है उसके बारे में जानने के बाद, आपको उस वैरिएबल का टाइप इस तरह से तय करना होगा:
- अगर मौजूद है, तो टाइप एट्रिब्यूट की वैल्यू देखें.
- अगर टाइप एट्रिब्यूट मौजूद नहीं है, तो वैरिएबल को स्ट्रिंग माना जाता है.
- अगर
<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
वैरिएबल का इस्तेमाल, XMLToJSON नीति के<Source>
एलिमेंट में किया जाता है:<Source>TrackingNumber</Source>
इसी तरह, याद रखें कि
request
वैरिएबल का इस्तेमाल, एक्सएमएल से JSON नीति के<OutputVariable>
एलिमेंट में किया जाता है:<OutputVariable>request</OutputVariable>
TrackingNumber
का टाइपstring
है, जबकिresponse
वैरिएबल का टाइपmessage
है, इसलिए ये इनके साथ काम नहीं करते. इसलिए, आपको यह गड़बड़ी कोड मिलेगा:steps.xml2json.InCompatibleTypes
ऊपर दी गई गड़बड़ी तब भी हो सकती है, जब
<Source>
एलिमेंट में मौजूद वैरिएबलmessage
टाइप का हो, लेकिन<OutputVariable>
एलिमेंट में मौजूद वैरिएबल स्ट्रिंग टाइप का हो.
रिज़ॉल्यूशन
पक्का करें कि <Source>
एलिमेंट और <OutputVariable>
एलिमेंट में तय किए गए वैरिएबल का टाइप हमेशा एक ही हो. यह ज़रूरी है कि <Source>
एलिमेंट और <OutputVariable>
एलिमेंट में मौजूद वैरिएबल का टाइप एक जैसा हो.
ऊपर बताई गई, एक्सएमएल से JSON में बदलने की नीति को ठीक करने के लिए, मैसेज असाइन करने की नीति का इस्तेमाल करके, string
टाइप का कोई दूसरा वैरिएबल TrackingNumber_output
एलान किया जा सकता है. साथ ही, इस वैरिएबल का इस्तेमाल, एक्सएमएल से JSON में बदलने की नीति के <OutputVariable>
एलिमेंट में किया जा सकता है.
असाइन मैसेज से जुड़ी नीति में बदलाव:
<?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
हैं.
संक्रमण की जांच
एक्सएमएल से JSON नीति में इस्तेमाल किए गए अमान्य सोर्स टाइप की पहचान करें. गड़बड़ी के मैसेज से आपको यह जानकारी मिल सकती है. उदाहरण के लिए, नीचे दी गई गड़बड़ी में अमान्य टाइप, पूर्णांक है.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
जिस एपीआई प्रॉक्सी प्रॉक्सी में यह गड़बड़ी हुई है उसमें सभी एक्सएमएल से JSON नीतियों की जांच करें. फ़ेल होने वाले एक्सएमएल टू 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>
एलिमेंट में बताया गया वैरिएबल टाइप तय करें:- एपीआई प्रॉक्सी बंडल में कोड का पता लगाएं, जहां इस वैरिएबल को पहले तय किया गया था.
- जिस नीति में वैरिएबल को तय और भरा गया है उसके बारे में जानने के बाद, आपको उस वैरिएबल का टाइप इस तरह से तय करना होगा:
- अगर मौजूद है, तो टाइप एट्रिब्यूट की वैल्यू देखें.
- अगर टाइप एट्रिब्यूट मौजूद नहीं है, तो वैरिएबल को स्ट्रिंग माना जाता है.
- अगर
<Source>
में बताए गए वैरिएबल का टाइप,message
याstring
टाइप नहीं है, तो गड़बड़ी की यह वजह है. वैरिएबल रेफ़रंस में, सामान्य वैरिएबल और उनके टाइप के बारे में जानकारी मिल सकती है.
उदाहरण के लिए, ऐसी ExtractVariables नीति पर विचार करें जिसका इस्तेमाल किसी एक्सएमएल पेलोड से वैल्यू निकालने के लिए किया गया है. साथ ही, वह वैल्यू को वैरिएबल
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
वैरिएबल का इस्तेमाल, एक्सएमएल से JSON नीति के<Source>
एलिमेंट में किया जाता है:<Source>BookCode</Source>
इस वैरिएबल का टाइप
Integer
है, जो कि एक मान्य<Source>
टाइप नहीं है, इसलिए एपीआई प्रॉक्सी को इस गड़बड़ी की वजह से फ़ेल कर दिया जाता है:steps.xml2json.InvalidSourceType
रिज़ॉल्यूशन
पक्का करें कि <Source>
एलिमेंट की जानकारी देने के लिए इस्तेमाल किए गए वैरिएबल का टाइप मान्य हो. <Source>
के मान्य टाइप message
और string
हैं.
एक्सएमएल के लिए JSON नीति में ऊपर दी गई गड़बड़ी से बचने के लिए, request
वैरिएबल का इस्तेमाल किया जा सकता है. यह वैरिएबल message
टाइप का होता है या किसी मान्य एक्सएमएल पेलोड की तरह मौजूद स्ट्रिंग का इस्तेमाल किया जा सकता है.