2016-08-05 57 views
1

Ganze letzte Woche kämpfte ich mit PHP-Bibliotheken für EWS. Ich habe versucht, Package365Ews und PHP-Ews, aber beide von ihnen fehlen Kernfunktion für mich, oder es ist nicht dokumentiert - GetRooms. Weiß jemand, wie man damit umgeht, oder weiß, dass eine andere Bibliothek dies implementiert?PHP-Bibliothek für Office365 EWS mit GetRooms

Antwort

2

Ich persönlich würde vorschlagen, meine eigene Bibliothek, garethp/php-ews.

Es ist einfach zu bedienen, aber nicht alles ist unter einfacheren APIs abgedeckt. EWS ist eine große Sache, und alles zu dokumentieren wäre intensiv. Davon abgesehen kann ich Ihnen sicherlich dabei helfen, vorhandene Dokumentationen von Microsoft in die Verwendung dieses Codes zu übersetzen. Und wenn Sie nach diesem Post noch weitere Probleme feststellen, checke ich mein Github täglich, damit bei der Protokollierung eines Problems in meinem Repository mehr Hilfe an einem besseren Ort für ein Hin und Her zur Verfügung steht.

Aber zunächst, lassen Sie mich ausgeben, wie Sie Funktionen ausführen, die nicht direkt dokumentiert sind. Wie GetRooms. Meine API umschließt um EWS, es blockiert nicht Ihren Zugriff darauf. Also obwohl ich keine offensichtliche Möglichkeit gefunden habe, eine GetRooms zu machen, it's still there. So ist

<?php 

use garethp\ews\API; 
use garethp\ews\API\Type; 

$api = API::fromUsernameAndPassword($server, $username, $password); 

//Build Request 

$result = $api->getClient()->GetRooms($request); 

var_dump($result); 

So wird die Frage, wie können wir die Anfrage erstellen? Nun, zum Glück ist EWS in XML sehr gut dokumentiert. Suchen Sie zuerst den Artikel, der beschreibt, was Sie versuchen, und suchen Sie dann nach dem XML. Ich bin nicht 100% was du willst, aber ich werde this article as a base verwenden. Die XML, die wir gehen, zu versuchen, zu replizieren

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
      xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" 
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2010" /> 
    </soap:Header> 
    <soap:Body> 
    <m:GetRooms> 
     <m:RoomList> 
     <t:EmailAddress>[email protected]</t:EmailAddress> 
     </m:RoomList> 
    </m:GetRooms> 
    </soap:Body> 
</soap:Envelope> 

Sie den Header überspringen kann, und die <m:GetRooms> Teil sind solche für Sie gebaut. Worauf wir uns konzentrieren, ist die Payload, die Sie senden möchten, nämlich

<m:RoomList> 
    <t:EmailAddress>[email protected]</t:EmailAddress> 
</m:RoomList> 

Wir möchten, dass unsere Anfrage so aussieht. Also, in unserem Code, wird unsere Anfrage wie folgt aussehen:

$request = array (
    'RoomsList' => array (
     'EmailAddress' => '[email protected]' 
    ) 
); 

$request = Type::buildFromArray($request); 

Und dies wird für Sie für die SOAP-Aufruf in XML übersetzt werden. Wenn Sie diese Methode für alle Funktionen verwenden, die nicht dokumentiert sind oder vollständig unterstützt werden, können Sie sie problemlos weiterverwenden und finden Sie in der offiziellen Microsoft-Dokumentation für jede Anforderung

+0

Hi! Gareth! Was für eine Überraschung, ich habe gerade Ihre Bibliothek getestet und alles wie Sie geschrieben, aber ich erhielt eine leere Antwort: [Link] (http://pastebin.com/1pxQ84Ls) Was ist mit RoomsList? – Sajgoniarz

+0

Mein Beispiel war genau das, ein Beispiel. Können Sie mir das vollständige $ request -Array zeigen, das Sie vor dem Senden erstellen? –

+0

[link] (http://pastebin.com/ycrVx2Pz) – Sajgoniarz