Ben. Ben Exchange Server kurmak için Exchange Web Hizmetleri (EWS) kullanıyorum bizim web uygulaması ve Microsoft Exchange 2007 arasında bir entegrasyon üzerinde çalışıyorum. Ancak, WSDL ile bazı sorunları çalıştırıyorum. Soyut türleri unsurları var WSDL tanımlanan çeşitli türleri vardır. Örneğin:
<xs:complexType name="RestrictionType">
<xs:sequence>
<xs:element ref="t:SearchExpression"/>
</xs:sequence>
</xs:complexType>
SearchExpression bir abtract türüdür. Böyle ExistsType gibi SearchExpression uzatmak çeşitli türleri vardır:
<xs:complexType name="ExistsType">
<xs:complexContent>
<xs:extension base="t:SearchExpressionType">
...
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Exists" type="t:ExistsType" substitutionGroup="t:SearchExpression"/>
Ben aşağıdaki XML üreten geçerli bir arama yapabilmek için beklediğiniz:
<Restriction>
<Exists>
...
</Exists>
</Restriction>
PHP'nin SoapClient sınıfını kullanarak arama yapmak çalıştığınızda Ancak, aşağıdaki hatayı alırsınız:
Istek şema doğrulaması başarısız oldu: elemanı 'http://schemas.microsoft.com/exchange/services/2006/types%3ASearchExpression' soyut ya da kendi türü soyut.
Ben RestrictionType türüne izleyin tanımını değiştirirseniz, çağrı çalışır:
<xs:element name="Exists" type="t:ExistsType"/>
PHP'nin SOAP işleme düzgün WSDL soyut türlerini ele almak mümkün değildir, ya da WSDL kendisi ile yanlış bir şey olabilir mi? Gerek arrises eğer ben ona düzenlemeler yapmak, böylece WSDL yerel olarak saklanır.
Şimdiden yardımlarınız için teşekkür ederim.
Edit:
I just wanted to clarify that I am not forming the XML myself. I am using the following code that should be creating the proper XML:
$request->Restriction->IsGreaterThan->FieldURI->FieldURI =
'item:DateTimeReceived';
$request->Restriction->IsGreaterThan->FieldURIOrConstant
->Constant->Value = date('c', $last_checked_time);