XML - JSON politikası çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

SourceUnavailable

Hata kodu

steps.xml2json.SourceUnavailable

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

Örnek Hata Mesajı

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

Neden

Bu hata, XML'den JSON'a politikanın <Source> öğesinde belirtilen mesaj veya dize değişkeni aşağıdakilerden biriyse oluşur:

  • kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
  • çözülemez (tanımlanmamıştır)

Örneğin, XML'den JSON'a politikanın istek akışında yürütülmesi gerekiyorsa ancak <Source> öğesi, istek akışında bulunmayan response değişkenine ayarlanmışsa bu hata meydana gelir.

Teşhis

  1. Hatanın oluştuğu XML - JSON politikasını ve mevcut olmayan değişkenin adını tanımlayın. Bu öğelerin ikisini de hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring'te politika adı Convert-XMLToJSON ve değişken response'dir:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. Başarısız XML'den JSON'ye politika XML'inde, <Source> öğesinde ayarlanan değişken adının, hata dizesinde tanımlanan değişken adıyla (yukarıdaki 1. adım) eşleştiğini doğrulayın. Örneğin, aşağıdaki XML'den JSON'a politika, <Source> öğesinde faultstring öğesindekiyle eşleşen response adlı bir değişken belirtir:

    <?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>
    
  3. <Source> öğesinde kullanılan değişkenin, XML'den JSON'a politikanın yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılıp kullanılamadığını belirleyin.

  4. Değişken şu durumlarda:

    • kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    • çözülemez (tanımlanmamıştır)

    hatanın nedeni budur.

    Örnek olarak, yukarıda gösterilen XML'den JSON'ye politikasının istek akışında yürütülmesi gerektiğini varsayalım. response değişkeninin, XML'den JSON'a politikanın <Source> öğesinde kullanıldığını unutmayın. Yanıt değişkeni yalnızca yanıt akışında kullanılabilir.

    Yanıt değişkeni istek akışında bulunmadığından şu hata kodunu alırsınız:

    steps.xml2json.SourceUnavailable
    

Çözünürlük

Başarısız XML'den JSON'a politikanın <Source> öğesinde ayarlanan değişkenin, politikanın yürütüldüğü akışta tanımlandığından ve bulunduğundan emin olun.

Yukarıda gösterilen XML'den JSON'a örnek politikayı düzeltmek için <Source> öğesini, request değişkenini istek akışında olduğu gibi kullanacak şekilde değiştirebilirsiniz:

<?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

Hata kodu

steps.xml2json.ExecutionFailed

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

Olası nedenler

Bu hatanın olası nedenleri şunlardır:

Neden Açıklama
Giriş yükü eksik Giriş yükü (XML) boş.
Geçersiz veya Yanlış Biçimlendirilmiş Giriş XML'den JSON'a politikasına iletilen giriş (XML) geçersiz veya bozuk.

Neden: Giriş yükü eksik

XML'den JSON'a politikalarında, <Source> öğesinde belirtilen değişkenin içeriği (yükü) boşsa bu hata meydana gelir.

Örneğin, XML'den JSON'ye politikasındaki <Source> öğesi, request veya response değişkeni olarak ayarlanmışsa ve bir XML yükü içermesi gerekiyorsa bu hata, yük boş olduğunda ortaya çıkar.

Teşhis

  1. Hatanın oluştuğu XML'den JSON'a dönüştürme politikasını belirleyin. Bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında politika adı Convert-XMLToJSON şeklindedir:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. Başarısız XML'den JSON'a politika XML'indeki <Source> öğesini inceleyin ve belirtilen değişkeni belirleyin. Örneğin, aşağıdaki XML - JSON politikası, istekte bulunacak şekilde <Source> öğesine sahiptir:

    <?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>
    
  3. XMLToJSON politikasında <Source> öğesi için belirtilen değişkenin boş olup olmadığını kontrol edin. Alan boşsa hatanın nedeni budur.

    Yukarıda gösterilen XML'den JSON'a politika örneğinde, istemci tarafından gönderilen istek yükü (ör.istek gövdesi) boştu.

    Örneğin:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
    

    XML istek yükü boş olduğu için şu hata kodunu alırsınız:

    steps.xml2json.ExecutionFailed
    

    Bu hata, <Source> öğesi response olarak ayarlanmışsa ancak arka uç sunucusu tarafından boş bir yük aktarılıyorsa da ortaya çıkabilir.

Çözünürlük

<Source> öğesi aracılığıyla XML'den JSON'a politikasına iletilen girişin geçerli bir XML yükü olduğundan ve boş olmadığından emin olun.

Örnek XML'den JSON'a politikasıyla ilgili sorunu düzeltmek için geçerli bir XML yükü gönderin. Örneğin:

  1. Aşağıdaki içeriğe sahip City.xml adlı bir dosya oluşturun:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. Aşağıdaki gibi bir cURL komutu kullanarak API çağrısını yapın:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

Neden: Geçersiz veya Yanlış Biçimlendirilmiş Giriş

XML'den JSON'a politika, geçersiz veya hatalı girişleri ayrıştırırsa bu hatayı alırsınız.

Örneğin, XML'den JSON'a politikasına giriş olarak aşağıdaki geçersiz XML sağlanırsa:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

aşağıdaki hatayı alırsınız:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

Teşhis

  1. Hatanın oluştuğu XML - JSON politikasını belirleyin. Bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring'te politika adı Convert-XMLToJSON'dur:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. XML'den JSON'a dönüştürme işleminin başarısız olduğu XML'de belirtilen <Source> öğesini inceleyin. Örneğin, aşağıdaki XML'den JSON'a politika, <Source> öğesini request değişkenine ayarlar:

    <?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>
    
  3. XML'den JSON politikasına ait <Source> öğesinde belirtilen girişin geçerli bir XML yükü olup olmadığını doğrulayın. Giriş geçersiz veya hatalı biçimlendirilmişse hatanın nedeni budur.

    Yukarıda gösterilen örnek XML - JSON politikasında, aşağıdaki geçersiz XML, Değişkenleri Ayıklama politikasına city.xml dosyası üzerinden iletilmiştir:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    İsteğin nasıl iletildiğini gösteren örnek API çağrısını aşağıda bulabilirsiniz:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    XML'de <root> öğesi için bitiş etiketi bulunmadığından API'ye iletilen XML yükü geçersiz. Bu nedenle şu hata kodunu alırsınız:

    steps.xml2json.ExecutionFailed
    

    Bu hata, <Source> öğesi response olarak ayarlanmışsa ancak arka uç sunucudan gelen XML yanıtı yükü geçersizse veya hatalıysa da ortaya çıkabilir.

Çözünürlük

<Source> öğesi aracılığıyla XML'den JSON'a politikasına iletilen girişin geçerli olduğundan ve hatalı biçimlendirilmediğinden emin olun.

Yukarıda bahsedilen örnek XML'den JSON'a politikasıyla ilgili sorunu düzeltmek için aşağıdaki gibi geçerli bir XML yükü isteği gönderin:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

OutputVariableIsNotAvailable

Hata kodu

steps.xml2json.OutputVariableIsNotAvailable

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Örnek Hata Mesajı

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Neden

Bu hata, XML'den JSON'a politikanın <Source> öğesinde belirtilen değişken dize türündeyse ve <OutputVariable> öğesi tanımlanmamışsa ortaya çıkar. <Source> öğesinde tanımlanan değişken string türünde olduğunda <OutputVariable> öğesi zorunludur.

Teşhis

  1. Hatanın oluştuğu XML'den JSON'a Dönüştürme Politikası'nı belirleyin. Bu bilgiyi, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring'te politika adı Convert-XMLToJSON'dur:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. XML'den JSON'a dönüştürme politikasında <OutputVariable> öğesinin eksik olup olmadığını doğrulayın.

    <OutputVariable> öğesinin eksik olduğu JSON politikasından örnek bir XML dosyasını burada bulabilirsiniz.

    <?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>
    
    
  3. <Source> öğesinde belirtilen değişkenin türünü belirleyin:

    1. Değişkenin ilk tanımlandığı API Proxy paketindeki kodu bulun.
    2. Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra, bu değişkenin türünü aşağıdaki gibi belirlemeniz gerekir:
      1. Tür özelliğinin değerini (varsa) kontrol edin.
      2. type özelliği yoksa değişkenin dize olduğu kabul edilir.
    3. Değişkenin türü string ise hatanın nedeni budur. Sık kullanılan değişkenler ve türleri hakkında bilgi edinmek için Değişkenler referansı başlıklı makaleyi inceleyin.

    Örneğin, yukarıdaki XML'den JSON'a politikadaki TrackingNumber değişkenine bakın. Bu parametre, dize türündedir. Şimdi, aşağıda gösterildiği gibi TrackingNumber adlı bir değişkene değer belirlemek için kullanılan "Mesaj Ata" politikasını göz önünde bulundurun:

    <?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> aracılığıyla ayarlanan değişken türünün dize olduğunu unutmayın. Dolayısıyla TrackingNumber değişkeni dize türüne sahiptir.

    Şimdi, TrackingNumber değişkeninin XML'den JSON'a politikasının <Source> öğesinde kullanıldığını hatırlayın:

    <Source>TrackingNumber</Source>
    

    TrackingNumber dize türüne sahip olduğundan ve <OutputVariable> politikada eksik olduğundan şu hata kodunu alırsınız:

    steps.xml2json.OutputVariableIsNotAvailable
    

Çözünürlük

XMLToJSON Politikası'nın <Source> öğesinde belirtilen değişken dize türündeyse bu durumda <OutputVariable> öğesinin zorunlu olduğundan emin olun.

Yukarıda bahsedilen XML'den JSON'a Politikası'nı düzeltmek için aşağıda gösterildiği gibi <OutputVariable> öğesini ekleyin.

<?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

Hata kodu

steps.xml2json.InCompatibleTypes

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

Örnek Hata Mesajı

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

Neden

Bu hata, <Source> öğesinde ve <OutputVariable> öğesinde tanımlanan değişkenin türü aynı değilse ortaya çıkar. <Source> öğesinde ve <OutputVariable> öğesinde bulunan değişkenlerin türünün eşleşmesi zorunludur.

The valid types are message and string.

Teşhis

  1. Hatanın oluştuğu XML'den JSON'a dönüştürme politikasını belirleyin. Bu bilgiyi hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring'te politika adı XMLToJSON_CheckType'dur:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. XML'den JSON'a dönüştürme politikasında başarısız olan <OutputVariable> alanında belirtilen değerleri not edin.

    Aşağıda, <OutputVariable> öğesinin eksik olduğu örnek bir XMLToJSON politikası verilmiştir.

    <?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>
    
  3. <Source> ve <OutputVariable> öğelerinde belirtilen değişkenin türünü belirleyin:

    1. Bu değişkenlerin her birinin ilk kez tanımlandığı API Proxy paketindeki kodu bulun.
    2. Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra, bu değişkenin türünü aşağıdaki gibi belirlemeniz gerekir:
      1. Tür özelliğinin değerini (varsa) kontrol edin.
      2. Tür özelliği yoksa değişken bir dize olarak kabul edilir.
    3. <Source> içinde belirtilen değişkenin türü string iken <OutputVariable> türü message ise veya bunun tam tersi söz konusuysa hatanın nedeni budur. Değişkenler referansı bölümünde, sık kullanılan değişkenler ve türleri hakkında bilgi edinebilirsiniz.

    Örneğin, aşağıda gösterildiği gibi TrackingNumber adlı bir değişkene değer ayarlamak için kullanılan bir Mesaj Ata politikası düşünün:

    <?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> aracılığıyla ayarlanan değişken türünün dize olduğunu unutmayın. Dolayısıyla TrackingNumber değişkeni dize türüne sahiptir.

    Şimdi, TrackingNumber değişkeninin XMLToJSON politikasının <Source> öğesinde kullanıldığını hatırlayın:

    <Source>TrackingNumber</Source>
    

    Benzer şekilde, request değişkeninin XML'den JSON'a politikasının <OutputVariable> öğesinde kullanıldığını unutmayın:

    <OutputVariable>request</OutputVariable>
    

    TrackingNumber string türüne, response değişkeni ise message türüne sahip olduğundan bu türler uyumlu değildir ve şu hata kodunu alırsınız:

    steps.xml2json.InCompatibleTypes
    

    Yukarıdaki hata, <Source> öğesindeki değişken message türüne sahipken <OutputVariable> öğesindeki değişken dize türüne sahipse de oluşabilir.

Çözünürlük

<Source> öğesinde ve <OutputVariable> öğesinde tanımlanan değişkenin türünün her zaman aynı olduğundan emin olun. <Source> öğesinde ve <OutputVariable> öğesinde bulunan değişkenlerin türünün eşleşmesi zorunludur.

Yukarıda açıklanan XML'den JSON Politikası'na yönelik sorunu düzeltmek için, İleti Atama Politikası'nı kullanarak string türünde başka bir TrackingNumber_output değişkeni bildirebilir ve JSON'a XML Politikası'nın <OutputVariable> öğesinde bu değişkeni kullanabilirsiniz.

Değiştirilen Mesaj Atama politikası:

<?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>

Değiştirilen XMLToJSON politikası:

  <?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

Hata kodu

steps.xml2json.InvalidSourceType

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

Örnek Hata Mesajı

{
    "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"
        }
    }
}

Neden

Bu hata, <Source> öğesini tanımlamak için kullanılan değişken türü geçersizse ortaya çıkar.Geçerli değişken türleri message ve string'dir.

Teşhis

  1. XML'den JSON'ye politikasında kullanılan geçersiz kaynak türünü tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada geçersiz tür tam sayı.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Hatanın oluştuğu API proxy'sindeki tüm XML'den JSON'a politikalarını inceleyin. XML'den JSON'a dönüştürme politikasında başarısız olan <Source> bölümünde belirtilen değişkenin adını not edin.

    <?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>
    
  3. <Source> öğesinde belirtilen değişken türünü belirleyin:

    1. Bu değişkenin ilk kez tanımlandığı API Proxy paketindeki kodu bulun.
    2. Değişkenin tanımlandığı ve doldurulduğu politikayı belirledikten sonra, o değişkenin türünü aşağıdaki şekilde belirlemeniz gerekir:
      1. Tür özelliğinin değerini (varsa) kontrol edin.
      2. Tür özelliği yoksa değişken bir dize olarak kabul edilir.
    3. <Source> içinde belirtilen değişkenin türü message veya string türü değilse hatanın nedeni budur. Sık kullanılan değişkenler ve türleri hakkında bilgi edinmek için Değişkenler referansı başlıklı makaleyi inceleyin.

    Örneğin, bir XML yükünden değeri ayıklamak için kullanılan ve değeri BookCode değişkenine integer türü olarak ayarlayan bir ExtractVariables politikası düşünün.

    <?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>
    

    Şimdi, BookCode değişkeninin XML'den JSON'a politikasının <Source> öğesinde kullanıldığını hatırlayın:

    <Source>BookCode</Source>
    

    Bu değişkenin türü Integer olduğundan (geçerli bir <Source> türü değil) API Proxy aşağıdaki hatayla başarısız olur:

    steps.xml2json.InvalidSourceType
    

Çözünürlük

<Source> öğesini belirtmek için kullanılan değişkenin türünün geçerli olduğundan emin olun. Geçerli <Source> türleri şunlardır: message ve string.

XML'den JSON'a politikasıyla ilgili yukarıdaki hatayı önlemek için message türündeki request değişkenini veya geçerli bir XML yükü olan başka bir dize kullanabilirsiniz.