PHP SoapClient: Dağıtılmış WSDL dosyası ile ilgili sorunlar

3 Cevap php

PHP'nin SoapClient ile (şema / diğer tanımları gerçek WSDL dışında bildirilen) bir dağıtılmış WSDL dosyası ile ilgili bir sorun var.

Bu bende arıza mesajı:

SOAP-ERROR: Parsing WSDL:  'getSomeInfo' already defined.

Bazı googling sonra, gibi PHP içinde bir böcek gibi görünüyor başkasının tam olarak aynı sorunu keşfetti: http://bugs.php.net/bug.php?id=45282

Herhangi bir bug fix (ler) olmuştur? Bu hata, bir çözüm için herhangi bir çözüm?

Sadece WSDL kullanarak SoapClient Ctor çağırma başarısız olduğunu, zira yalnızca ben, bir kod parçacığını ilanıyla anlamsız olduğunu düşünüyorum.

3 Cevap

PHP kaynak kodu (svn) açıklamayı içeren import düğümler önemser ki /* TODO: namespace ??? */. Ad yöntem çarpışmalar ortaya sağlayan göz ardı edilir.

Üç çözüm önerilmiştir:

  1. Ad alanları karşılamak üzere kaynak kodunu düzeltmek (olurdu very hoş geldiniz)
  2. Böyle bir yöntem çakışmaları önlemek için WSDL dosyaları işlemek (bu not bir seçenek tüm muhtemeldir)
  3. Bunun yerine orijinal WSDL dosyasını kullanarak, ayrı SoapClient örnekleri ile (yöntem adı çakışmaları yok veya grup olanları) ithal bireysel olanları çağırabilir.

Ben daha fazla yardımcı olamaz üzgünüm.

WSDL dosyanın yerel kopyasını indirin. Yinelenen bir yöntem adlarını kaldırmak. Lütfen sabun istemci yerel WSDL dosyasını kullanmak için güncelleyin. Bu geçmişte benim için iyi çalıştı.

PHP ile birden fazla uç noktaları sağlayan bir WCF hizmeti erişirken ben aynı sorunu vardı. Benim durumumda, her nokta için ana WSDL ithalatı alt WSDLs, alt WSDLs yaparken sırayla ana-WSDL içerdiğini ortaya çıktı. Bu görünüşte PHP iki ana WSDL okur ve "zaten tanımlı"-hata ile gelen nedeni de budur. Ben istenen son nokta alt WSDL URL yerine ana WSDL URL ile müşteri oluşturarak bu davranışı önlemek olabilir.