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 usern...@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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php