From: Robbert van Andel on
I've been trying to connect to our SharePoint server's webservices
with PHP. I downloaded the nusoap library and have been trying to make
a connection using sample code from various websites. I keep getting
the following error:

<h1>You are not authorized to view this page</h1>
You do not have permission to view this directory or page using the
credentials that you supplied because your Web browser is sending a
WWW-Authenticate header field that the Web server is not configured to
accept.
<h2>HTTP Error 401.2 - Unauthorized: Access is denied due to server
configuration.<br>Internet Information Services (IIS)</h2>

My code looks like this:

require_once('/usr/share/php/nusoap/nusoap.php');

/* Your username and password, separated by a colon
Domain may be optional, depending on your setup */
$auth = "username:password";

/* Location of the Lists.asmx file
If the list is in a subsite, the subsite must be in the path */
$wsdl = "http://domain.com/depts/is/private/_vti_bin/Lists.asmx?WSDL";

/* GUID of the list */
$guid = "Shared Documents";

/* Setup NuSOAP
Sharepoint requires NTLM Authorization
You need a fairly recent version of CURL installed for this */
try {
$client = new nusoap_client($wsdl,true);
$client->setCredentials("","","ntlm");
$client->setUseCurl(true);
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_USERPWD, $auth);
//$client->soap_defencoding = 'UTF-8';


$xml = '
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>' . $guid . '</listName>
<viewName>All Documents</viewName>
<query>
<xsd:schema>schema</xsd:schema>xml</query>
<viewFields>
<xsd:schema>schema</xsd:schema>xml</viewFields>
<rowLimit>string</rowLimit>
<queryOptions>
<xsd:schema>schema</xsd:schema>xml</queryOptions>
<webID>string</webID>
</GetListItems>
</soap:Body>
</soap:Envelope>
';

$result = $client->call("GetListItems",$xml);
if(isset($fault)) {
echo "<p>Error: " . $fault . "</p>\n";
}
echo "<pre>\$result = " .
htmlspecialchars(print_r($result,true)) . "</pre>\n";
}
catch(Exception $e) {

echo "<p>" . $e->getMessage() . "</p>\n";
}


Our SharePoint server uses integrated authentication. I've tried
several permutations of the username, including just the username,
domain\username and username(a)domain. All are returning the same error.
My guess is that PHP is sending the username/password combination in a
way that SharePoint doesn't like.

Has anyone been able to connect to SharePoint's web services and if so, how?

Thanks
 | 
Pages: 1
Prev: SharePoint
Next: A stupid question about classes