使用nusoap通过Web服务从Sharepoint库下载文件

大鲍勃

我正在尝试使用nusoap客户端通过Web服务从Sharepoint库下载文件。我可以使用Lists.wsdl连接并获取List内容,但是我无法确定Copy.wsdl方法的参数。

<?php

require_once('lib/nusoap.php');

$username = 'domain\user';
$password = 'secret';
$rowLimit = '0';

$listGuid = "{0379989D-8639-430B-9FD0-96551B7EAB29}";

//Lists.wsdl copied from the Sharepoint site and stored on local drive
$wsdl = "http://localhost/sp/Lists.wsdl";
//NTLM authentication.
$client = new nusoap_client($wsdl, true);
$client->setCredentials('','','ntlm');
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_USERPWD, $username.':'.$password);

//XML for the request
$getItemsXml ='
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>'.$listGuid.'</listName>
<rowLimit>'.$rowLimit.'</rowLimit>
</GetListItems>
';

//This works and returns requested data from a list
$result = $client->call('GetListItems', $getItemsXml);
$responseContent = substr($client->response,strpos($client->response, "<"),strlen($client->response)-1);


//This part does not work
//Library ID
$fileGuid = "{A24306B5-50E9-44C0-9728-69E2D015B689}";

$cwsdl = "http://localhost/sp/Copy.wsdl";
$cclient = new nusoap_client($cwsdl, true);
$cclient->setCredentials('','','ntlm');
$cclient->useHTTPPersistentConnection();
$cclient->setCurlOption(CURLOPT_USERPWD, $username.':'.$password);

//This is where I get lost
$fileParams = array();
$cResult = array(0);
$fieldInformationCollection = array('fieldInformation'=>array('DisplayName'=>'', 'Id'=>'', 'InternalName'=>'', 'Type'=>'', 'Value'=>''));
$content = array('');

$fileParams[] = "http://site.example.com/subsite/folder/somefile.pdf";
$fileParams[] = $cResult;
$fileParams[] = $fieldInformation;
$fileParams[] = $content;

//This call fails
$result = $cclient->call('GetItem', $fileParams);

?>

失败调用的调试信息显示某些参数有误,但我无法弄清楚。

wsdl: in serializeType: uqType: GetItem, ns: http://schemas.microsoft.com/sharepoint/soap/, phptype: struct, arrayType: 
wsdl: in serializeType: phpType is struct, but value is not an array
wsdl: in serializeType: returning: 
wsdl: serializeRPCParameters returning: 
nusoap_client: got wsdl error: phpType is struct, but value is not an array: see debug output for details

我尝试阅读(并理解)Copy.wsdl文件并完成调试输出,但是没有骰子。

有人做这个工作吗?谢谢。

大鲍勃

因此,经过几个小时的调试,我发现答案非常简单。唯一需要发送的参数是要下载的文件的URL,如下所示:

//Set URL of the file
$file['Url'] = 'http://site.example.com/subsite/Folder/requested_file.ext';

//Call nusoap client
$result = $cclient->call('GetItem', $file);

该参数必须是具有单个元素的关联数组,称为“ Url”。

客户端将返回一个包含元素“ GetItemResult”(成功时设置为0),“ Fields”(包含来自库的有关文件的各种信息的75个数组的数组)以及最后一个“ Stream”数组,其中包含Base64编码的文件内容。一个字符串。

file_put_contents('c:/temp/requested_file.ext', base64_decode($result['Stream']));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过内置下载服务下载文件

来自分类Dev

使用服务下载文件

来自分类Dev

使用服务下载文件

来自分类Dev

从SharePoint下载文件

来自分类Dev

从Sharepoint下载文件

来自分类Dev

使用Java从Sharepoint下载文件

来自分类Dev

使用PowerShell从SharePoint Online下载文件

来自分类Dev

如何使用VBA从Sharepoint下载文件

来自分类Dev

如何使用jxbrowser库下载文件?

来自分类Dev

使用Python通过Internet下载文件

来自分类Dev

使用Python通过SSH下载文件

来自分类Dev

通过脚本从文件服务器下载文件

来自分类Dev

使用Web视图下载文件

来自分类Dev

Java连接到FTP服务器并使用Java默认库下载文件

来自分类Dev

使用Microsoft.SharePoint.Client从OneDrive下载文件

来自分类Dev

使用 C#.net 从 Sharepoint Online 下载文件?

来自分类Dev

通过代理服务器使用Boto从s3下载文件

来自分类Dev

通过网站从PHP服务器下载文件

来自分类Dev

如何通过javascript从tomcat服务器下载文件?

来自分类Dev

如何通过SSH服务器下载文件?

来自分类Dev

为什么使用 AJAX 下载文件会冻结整个 PHP Web 服务器?

来自分类Dev

通过Powershell从KUDU(Azure Web App)下载文件

来自分类Dev

通过Yii下载文件

来自分类Dev

通过Ajax下载文件

来自分类Dev

如何使用python中的Web URL下载文件?通过浏览器下载有效,但不能通过python请求下载

来自分类Dev

在Android中使用IntentService从服务器下载文件

来自分类Dev

使用ASP MVC从远程服务器下载文件

来自分类Dev

使用django从远程服务可下载文件(巨大)

来自分类Dev

使用Java从服务器下载文件