Go Back   HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials > Linux Forums > HOWTO-Related Questions

Do you like HowtoForge? Please consider supporting us by becoming a subscriber.
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 10th July 2011, 15:10
lightsabersetc lightsabersetc is offline
Junior Member
 
Join Date: Jul 2011
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Question Getting blank response from exchange server (RE:Talking SOAP With Exchange)

Hello,

I just followed the tutorial at http://www.howtoforge.com/talking-soap-with-exchange. I am getting a successful response from $client->__getFunctions() & $client->__getTypes(), but am receiving a blank response on any call thereafter. Below is my code and some relevant output:

Code:
class NTLMSoapClient extends SoapClient {
		function __doRequest($request, $location, $action, $version) {
			$headers = array(
				'Method: POST',
				'Connection: Keep-Alive',
				'User-Agent: PHP-SOAP-CURL',
				'Content-Type: text/xml; charset=utf-8',
				'SOAPAction: "'.$action.'"',
			);  
			$this->__last_request_headers = $headers;
			$ch = curl_init($location);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
			curl_setopt($ch, CURLOPT_POST, true );
			curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
			curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
			curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
			curl_setopt($ch, CURLOPT_USERPWD, $this->user.':'.$this->password);
			
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
			$response = curl_exec($ch);
			
			echo $request . "<BR>" . $response;
			
			return $response;
		}   
		function __getLastRequestHeaders() {
			return implode("n", $this->__last_request_headers)."n";
		}   
	}
Code:
class ExchangeNTLMSoapClient extends NTLMSoapClient {
		protected $user = 'me@exchange.com';
		protected $password = 'password';
	}
Code:
class NTLMStream {
		private $path;
		private $mode;
		private $options;
		private $opened_path;
		private $buffer;
		private $pos;

		public function stream_open($path, $mode, $options, $opened_path) {
			echo "[NTLMStream::stream_open] $path , mode=$mode n";
			$this->path = $path;
			$this->mode = $mode;
			$this->options = $options;
			$this->opened_path = $opened_path;
			$this->createBuffer($path);
			return true;
		}

		public function stream_close() {
			echo "[NTLMStream::stream_close] n";
			curl_close($this->ch);
		}

		public function stream_read($count) {
			echo "[NTLMStream::stream_read] $count n";
			if(strlen($this->buffer) == 0) {
				return false;
			}
			$read = substr($this->buffer,$this->pos, $count);
			$this->pos += $count;
			return $read;
		}

		public function stream_write($data) {
			echo "[NTLMStream::stream_write] n";
			if(strlen($this->buffer) == 0) {
				return false;
			}
			return true;
		}

		public function stream_eof() {
			echo "[NTLMStream::stream_eof] ";
			if($this->pos > strlen($this->buffer)) {
				echo "true n";
				return true;
			}
			echo "false n";
			return false;
		}

		/* return the position of the current read pointer */
		public function stream_tell() {
			echo "[NTLMStream::stream_tell] n";
			return $this->pos;
		}

		public function stream_flush() {
			echo "[NTLMStream::stream_flush] n";
			$this->buffer = null;
			$this->pos = null;
		}

		public function stream_stat() {
			echo "[NTLMStream::stream_stat] n";
			$this->createBuffer($this->path);
			$stat = array(
				'size' => strlen($this->buffer),
			);
			return $stat;
		}

		public function url_stat($path, $flags) {
			echo "[NTLMStream::url_stat] n";
			$this->createBuffer($path);
			$stat = array(
				'size' => strlen($this->buffer),
			);
			return $stat;
		}

		/* Create the buffer by requesting the url through cURL */
		private function createBuffer($path) {
			if($this->buffer) {
				return;
			}
			echo "[NTLMStream::createBuffer] create buffer from : $pathn";
			$this->ch = curl_init($path);
			curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($this->ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
			curl_setopt($this->ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
			curl_setopt($this->ch, CURLOPT_USERPWD, $this->user.':'.$this->password);
                        
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
			echo $this->buffer = curl_exec($this->ch);
			echo "[NTLMStream::createBuffer] buffer size : ".strlen($this->buffer)."bytesn";
			$this->pos = 0;
		}
	}
Code:
class ExchangeNTLMStream extends NTLMStream {
		protected $user = 'me@exchange.com';
		protected $password = 'password';
	}
index.php
Code:
$wsdl = dirname(__FILE__)."\\Services.wsdl";
    
    stream_wrapper_unregister('https');
    stream_wrapper_register('https', 'ExchangeNTLMStream') or die("Failed to register protocol");
    
    $client = new ExchangeNTLMSoapClient($wsdl);
            
    /* Do something with the web service connection */
    stream_wrapper_restore('https');
    
    var_dump($client->__getFunctions());
    //var_dump($client->__getTypes());
    $FindFolder->Traversal = "Shallow";
    $FindFolder->FolderShape->BaseShape = "Default";
    $FindFolder->ParentFolderIds->DistinguishedFolderId->Id = "root";
    $result = $client->FindFolder($FindFolder);
    var_dump($result);
    $folders = $result->ResponseMessages->FindFolderResponseMessage->RootFolder->Folders->Folder;
    foreach($folders as $folder) {
            echo $folder->DisplayName."n";
    }
The var_dump of $result returns NULL. I dumped $request and $response in the class NTLMSoapClient, which yielded 'Default' and 'NULL' respectively. I have tried basically every function with the same results. At this point, I've been banging my head against the table for quite a while trying to get this to work so I'm hoping one of you can help

Thanks in advance!
Reply With Quote
Sponsored Links
 

Bookmarks

Tags
curl, ews, exchange server, ntlm, php, soap

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
ISPConfig3 mail doesn't work pehden Installation/Configuration 20 9th December 2013 14:05
Can't Ping over VPN RoMiONeT Server Operation 2 4th July 2010 00:19
FTP cannot open remote folder!?! andysm849 Server Operation 23 16th October 2008 23:34
Email - Ueb-Miau mazhar Installation/Configuration 5 21st December 2005 10:01
The Perfect Setup Suse 9.3 - Postfix problems new_bee05 HOWTO-Related Questions 20 25th November 2005 02:30


All times are GMT +2. The time now is 04:15.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.