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 politikası <Source> öğesinde belirtilen message veya dize değişkeni şu durumlarda oluşur:

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

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

Teşhis

  1. Hataya neden olan XML'den JSON'a politikayı ve kullanılamayan değişkenin adını belirleyin. Bu öğelerin ikisini de hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde politika adı Convert-XMLToJSON, değişken ise response'dir:

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

    <?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 politikası yürütülürken akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.

  4. Değişken şu durumlarda:

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

    Bu durumda hatanın nedeni budur.

    Örneğin, yukarıda gösterilen XML'den JSON'a politikası istek akışında yürütülmelidir. response değişkeninin, XML'den JSON'a politikası için <Source> öğesinde kullanıldığını hatırlayın. Yanıt değişkeni yalnızca yanıt akışında kullanılabilir.

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

    steps.xml2json.SourceUnavailable
    

Çözünürlük

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

Yukarıda gösterilen örnek XML'yi JSON politikasına dönüştürmek için <Source> öğesini, istek akışında olduğu gibi request değişkenini 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
Eksik giriş yükü Giriş yükü (XML) boş.
Geçersiz veya Hatalı Giriş (Invalid or Malformed Input) XML'den JSON'a politikasına iletilen giriş (XML) geçersiz veya bozuk.

Nedeni: Giriş yükü eksik

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

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

Teşhis

  1. Hatayı içeren 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 içinde politika adı Convert-XMLToJSON'dir:

    "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 olan XML'den JSON'a politika XML'sindeki <Source> öğesini inceleyin ve belirtilen değişkeni belirleyin. Örneğin, aşağıdaki XML'den JSON'a politikada <Source> öğesi istek olarak ayarlanmıştır:

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

    Yukarıda gösterilen örnek XML'den JSON'a politikada, istemci tarafından gönderilen istek yükü (yani istek gövdesi) boştu.

    Örneğin:

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

    XML isteği yükü boş olduğundan şu hata kodunu alırsınız:

    steps.xml2json.ExecutionFailed
    

    Bu hata, <Source> öğesi yanıt olarak ayarlanmışsa ancak arka uç sunucusu tarafından boş bir yük iletilirse de oluşabilir.

Çözünürlük

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

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

  1. Aşağıdaki içeriklere 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ı 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 politikası, geçersiz veya hatalı biçimlendirilmiş girişi ayrıştırırsa bu hatayı alırsınız.

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

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

hatasını 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. Hatayı içeren 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 içinde politika adı Convert-XMLToJSON'dir:

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

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

    Yukarıda gösterilen XML'den JSON'a politikası örneğinde, city.xml dosyası aracılığıyla Değişkenleri Çıkar politikasına aşağıdaki geçersiz XML 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 yanıta ayarlanmışsa ancak arka uç sunucusundan gelen XML yanıtı yükü geçersiz veya bozuksa da oluşabilir.

Çözünürlük

<Source> öğesi aracılığıyla XML'den JSON'a politikasına iletilen girişin geçerli ve iyi biçimlendirilmiş olduğundan 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 iletin:

<?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 politikası XML'sindeki <Source> öğesinde belirtilen değişkenin türü dizeyse ve <OutputVariable> öğesi tanımlanmamışsa oluşur. <Source> öğesinde tanımlanan değişkenin türü string olduğunda <OutputVariable> öğesi zorunludur.

Teşhis

  1. Hatayı içeren XML to JSON Policy'yi (XML'den JSON'a Dönüştürme Politikası) belirleyin. Bu bilgiyi hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde politika adı Convert-XMLToJSON'dir:

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

    Eksik <OutputVariable> öğesi olan örnek bir XML-JSON politikası aşağıda verilmiştir.

    <?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. API Proxy paketinde değişkenin ilk tanımlandığı 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şkenin dize olduğu kabul edilir.
    3. Değişkenin türü string ise hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.

    Örneğin, yukarıdaki XML'den JSON'a politikadaki TrackingNumber değişkenine bakın. Dize türündedir. Şimdi de aşağıda gösterildiği gibi TrackingNumber adlı bir değişkene değer atamak için kullanılan bir Mesaj Atama politikasını ele alalım:

    <?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> ile ayarlanan değişken türünün dize olduğunu unutmayın. Bu nedenle, TrackingNumber değişkeni dize türündedir.

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

    <Source>TrackingNumber</Source>
    

    TrackingNumber dize türünde olduğundan ve politikada <OutputVariable> 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şkenin türü dizeyse bu durumda <OutputVariable> öğesinin zorunlu olduğundan emin olun.

Yukarıda bahsedilen XML'den JSON'a politikayı düzeltmek için <OutputVariable> öğesini aşağıda gösterildiği gibi 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 oluşur. <Source> öğesi 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. Hatayı içeren XML to JSON Policy'yi (XML'den JSON'a Dönüştürme Politikası) belirleyin. Bu bilgiyi hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde politika adı XMLToJSON_CheckType'dir:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. Başarısız olan XML'den JSON'a politikası notunda <OutputVariable> içinde belirtilen değerleri not edin.

    Aşağıda, <OutputVariable> öğesi eksik olan bir örnek 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. API proxy paketinde, bu değişkenlerin her birinin ilk olarak tanımlandığı 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şkenin dize olduğu kabul edilir.
    3. <Source> içinde belirtilen değişkenin türü string iken <OutputVariable> türü mesaj ise veya bunun tam tersi geçerliyse hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.

    Örneğin, aşağıda gösterildiği gibi TrackingNumber adlı bir değişkene değer atamak için kullanılan bir Assign Message politikasını ele alalım:

    <?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> ile ayarlanan değişken türünün dize olduğunu unutmayın. Bu nedenle, TrackingNumber değişkeni dize türündedir.

    Ş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ı <OutputVariable> öğesinde kullanıldığını hatırlayın:

    <OutputVariable>request</OutputVariable>
    

    TrackingNumber, string türünde, response değişkeni ise message türünde olduğundan bunlar uyumsuz türlerdir ve bu nedenle hata kodunu alırsınız:

    steps.xml2json.InCompatibleTypes
    

    Yukarıdaki hata, <Source> öğesindeki değişken message türünde ancak <OutputVariable> öğesindeki değişken dize türünde olduğunda da oluşabilir.

Çözünürlük

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

Yukarıda bahsedilen XML'den JSON'a politikayı düzeltmek için, Mesaj Atama Politikası'nı kullanarak TrackingNumber_output türünde başka bir değişken string tanımlayabilir ve bu değişkeni XML'den JSON'a politikasının <OutputVariable> öğesinde kullanabilirsiniz.

Değiştirilmiş ileti 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ştirilmiş 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şkenin türü geçersizse oluşur.Geçerli değişken türleri message ve string'dir.

Teşhis

  1. XML'den JSON'a politikasında kullanılan geçersiz kaynak türünü belirleyin. Bu bilgiyi hata mesajından edinebilirsiniz. Örneğin, aşağıdaki hatada geçersiz tür tam sayıdır.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Hatayı içeren API Proxy'sindeki tüm XML-JSON politikalarını inceleyin. Başarısız olan XML'den JSON'a politikası notunda, <Source> içinde 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şkenin türünü belirleyin:

    1. Bu değişkenin ilk olarak 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şkenin dize olduğu kabul edilir.
    3. <Source> içinde belirtilen değişkenin türü message veya string türü değilse hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.

    Örneğin, bir XML yükünden değeri çıkarmak için kullanılan ve değeri aşağıdaki gibi BookCode değişkenine integer türünde ayarlayan bir ExtractVariables politikasını ele alalım:

    <?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ı <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ğildir) API proxy'si şu 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 message ve string'dir.

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