Exchange 2010 EWS'nin (API) ve / veya PHP'nin NuSOAP kütüphane ile Yardım?

0 Cevap php

Sadece devam etmeden önce temiz olması için: kullanarak PHP'nin yerleşik SOAP sınıfında ne yazık ki burada değil bir seçenek (üretim sunucunun PHP onunla inşa değil ve olmayacak).


Bana tamamen dış sunucu uygulaması için kullanıcıların kimliğini doğrulamak için izin EWS'yi kullanmaya çalışıyorum. LDAP kimlik doğrulama izin verilmeyen olmuştur. Benim EWS Wsdl http://www.testexchangeconnectivity.com/, Microsoft Otomatik bulma aracı ile doğru olduğunu doğruladıktan. WSDL içeriği burada bulunabilir: http://pastebin.org/214070

Sunucu SSL kullanıyor, ve "NTLM" bir EWS için varsayılan kimlik doğrulama yöntemi kullanıyor.

Ben (hemen hemen burada kullanılan teknolojinin tüm olan) maalesef XML, SOAP, ya da cURL konusunda çok bilgili değilim, web etrafında çeşitli kod örnekleri denedim. Benim kod mevcut yineleme aşağıda bulunmaktadır:

<?php

include_once('./lib/nusoap.php');

$username = 'username@example.com';
$password = 'password';
$ews_url  = 'https://owa.example.com/EWS/Exchange.asmx';
$soapclient = new nusoap_client($service, true);
$soapclient->setCredentials($username, $password, 'ntlm');
$soapclient->setUseCurl(true);
$soapclient->useHTTPPersistentConnection();
$soapclient->setCurlOption(CURLOPT_USERPWD, $username.':'.$password);
$soapclient->soap_defencoding = 'UTF-8';

$params  = '<FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"';
$params += ' xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" Traversal="Shallow">';
$params += '    <ItemShape>';
$params += '        <t:BaseShape>IdOnly</t:BaseShape>';
$params += '        <t:AdditionalProperties>';
$params += '            <t:FieldURI FieldURI="message:From"/>';
$params += '            <t:FieldURI FieldURI="item:Subject"/>';
$params += '            <t:FieldURI FieldURI="message:IsRead"/>';
$params += '            <t:FieldURI FieldURI="item:DateTimeReceived"/>';
$params += '            <t:FieldURI FieldURI="calendar:Start"/>';
$params += '            <t:FieldURI FieldURI="calendar:End"/>';
$params += '            <t:FieldURI FieldURI="calendar:Location"/>';
$params += '            <t:FieldURI FieldURI="task:Status"/>';
$params += '            <t:FieldURI FieldURI="task:DueDate"/>';
$params += '        </t:AdditionalProperties>';
$params += '    </ItemShape>';
$params += '    <IndexedPageItemView Offset="0" MaxEntriesReturned="5" BasePoint="Beginning"/>';
$params += '    <ParentFolderIds>';
$params += '        <t:DistinguishedFolderId Id="inbox"/>';
$params += '    </ParentFolderIds>';
$params += '</FindItem>';

$operation = 'FindItem';
$namespace = '';
$soapAction = '';
$headers = false;
$result = $soapclient->call($operation, $params, $namespace, $soapAction, $headers);
echo '<pre>'; print_r($result); echo '</pre>';

if($soapclient->fault){
    echo 'FAULT: ';
    echo '<pre>'; print_r($result); echo '</pre>';
}else{
    $err = $soapclient->getError();
    if ($err) {
        echo '<p><b><u>Error</u>:</b><br />' . $err . '</p>';
    }else{
        echo 'Connection succeeded.';
    }
}
?>

Ben yaşıyorum, gerçek sorunu NuSOAP genel bir hata mesajı dönüyor olmasıdır: "! WSDL belgesinde tanımlanmış işlemleri". WSDL görünüyor itibaren, bu yanlış görünüyor ve bana kod şey eksik inandırıyor. Ben kodu gerçek istemci çağrısı ($ SoapClient-> çağrısı (...)) kaldırırsanız, kod "Bağlantı başarılı." Yazdırır, ancak birlikte veya teşebbüs NTLM kimlik doğrulama kodu olmadan yapar.

Ben de benim geliştirme makinede "php-ews" projesini (aynı kod üretim sunucusunda işe yaramaz olsa bile) kullanarak çalıştı ve aynı zamanda bir hata almadan şey erişemedi ettik.

Herkes bu teknolojilerin herhangi biri ile herhangi bir deneyime sahiptir ve bazı açıklama (veya olası hataları) işaret etmek mümkün olabilir eğer ben çok takdir ediyorum. Başka açıklama benim parçası gerekiyorsa, lütfen bana bildirin.

UPDATE 1: It seems one error in loading the WSDL is the NTLM Authentication. Using cURL alone (no NuSOAP) I was able to access the WSDL file and find out the server is redirecting to a different endpoint location (.../EWS/Services.wsdl).

Ne yazık ki, ben NuSOAP kütüphanenin cURL kullanarak yeteneği ve NuSOAP ile aynı ayar seçenekleri denedim ve NuSOAP WSDL dosyasına erişmek / / görünümünü görmek için sadece edemiyor sanki ben hala aynı genel bir hata mesajı alıyorum. Ben NuSOAP istemci kod hemen hata mesajı döndürüyor ise cURL sürümü, (bir çok adımlı el sıkışma işlemi NTLM) dönmek için birkaç dakikanızı alır gibi yine NTLM kimlik doğrulaması olabilir inanıyorum.

0 Cevap