2012-09-15 21 views
7

Sayısal bir öğeye sahip bir web hizmeti kullanıyorum. Delphi wsdl ithalatçı Int64 olarak ayarlar.Int64 türünde web hizmetinde boş değer

Web hizmeti bu öğenin boş olmasına izin verir. Ancak, Int64 olarak tanımlandığından, Delphi'de web hizmetini bunun için bir değer belirlemeden tüketirim, varsayılan olarak 0'dır, çünkü bir Int64'dür. Ancak boş olmalı ve web hizmeti 0 değerini kabul etmeyecek (0 geçersiz olarak tanımlandı ve web servisi tarafından bir hata döndürdü).

Tür Int64 ise boş bir değeri nasıl geçebilirim?

+0

Servis sağlayıcısına servislerini düzeltmeleri gerektiğini söyle? Bir 'boş' bir 'Int64' için geçerli bir değer değildir (ve bir kişinin yaşı için bir 'Int64' ilk etapta oldukça gülünçtür - pek çok insan bir byte'ın tutabileceğinden daha uzun yaşamaz, en azından o zamandan beri İncil zamanlar). –

+0

Belki 999 yaşını – Hendra

cevap

7

Boş yaş (örnek)

<E06_14></E06_14> 

örneğin "bilinmeyen" yaşıma, özel bir anlama sahip olabilir. Bu durumda, asıl soru, alanın Delphi tarafında nasıl tekrar doldurulabileceğidir. J.M. Babet ait this post itibaren

: 'nil' için

Destek devam eden bir konu olmuştur. Delphi'nin birkaç yerleşik türü null olamaz. Bu yüzden (zarif değil ama çalışır) için bir sınıf kullanmayı tercih ettik. Bu yüzden Delphi 2007 için en son güncellemeyle, buna yardımcı olmak için birkaç TXSxxxx türü ekledim. Temel olarak: TXSBoolean, TXSInteger, TXSLong vb. TXSString zaten vardı ama kayıtlı değildi. Şimdi öyle. Bir WSDL'yi içe aktarırken, ithalatçı anahtarını TXSxxxx türlerine dönüştürmek için 'Basit Doldurulabilir türleri için' TXSString'i kullan 'seçeneğini etkinleştirmeniz gerekir. . Komut satırında "-0z +" seçeneğidir. nillable öğelerle ilgili

DocWiki for the Import WSDL Wizard da gösterir iki seçenek:

  • Süreç nillable ve opsiyonel elementler - WSDL ithalatçı opsiyonel ve nillable ilgili bilgileri oluşturmak yapmak için bu seçeneği işaretleyin özellikleri. Bu bilgiler, belirli özelliklerin sıfır olmasına izin vermek için SOAP çalışma zamanı tarafından kullanılır. Basit nillable türleri için

  • Kullanım TXSString - Delphi ve C++ o izin vermez iken WSDL standart, C++, Delphi veya NULL olarak, basit tipleri nil olmasını sağlar. WSDL ithalatçı 'un bu sınırlamayı, sarıcı sınıfları örneklerini kullanarak gidermek için bu seçeneği işaretleyin.

+0

olarak deneyebilirsiniz, ancak bu seçeneği denedim ancak wsdl ithalatçı bunu Int64 olarak ithal ediyor. Wsdl'de ithalatçıya nilable olmadığını söyleyen bir şey olmalı. E06_14 için alınan birim tanımını TXSInteger olarak değiştirmeyi denedim, ancak TXSInteger değerini sıfır değerine dönüştürmenin bir yolunu bulamadım.Belki de bunu TXSString'e değiştirmeyi ve daha iyi şansa sahip olup olmadığımı görmeyi deneyeceğim. –

+2

İçe aktarılan birimi değiştirdim ve türü Int64'ten TXSInteger'e değiştirdim. Sonra, TXSInteger'i başlatmak yerine sıfırladım. Şimdi harika çalışıyor. –

+0

Yardım edebilirim! – mjn

İlgili konular