Sharepoint & PHP

来源:互联网 发布:seo属于什么专业 编辑:程序博客网 时间:2024/06/06 07:26

 

Sharepoint & PHP

Posted in PHP by Andrew Johnstone on the December 8th, 2005

I was interested in integrating PHP and SharePoint services, and using Microsoft Word 2003 (Or other MS Office Products) to upload documents directly to PHP, here are some of my observations.

There are two processes winword.exe itself pyshically POST’s the word document on the server, another process called dssm.exe (Microsoft Office Document Update Utility), which manages updates.

Sharepoint Document

Analyzing the http protocol, whilst utilizing shared workspaces in Microsoft Word 2003 initialially authenticates via NTLM and the following protocols are listed in OPTIONS: [GET, POST, OPTIONS, HEAD, MKCOL, PUT, PROPFIND, PROPPATCH, DELETE, MOVE, COPY, GETLIB, LOCK, UNLOCK]; Which means Apache would have to be configured to accept some of the protocols.

Once authenticated the following occurs:

WinWord.exe Upload to SharePoint

WinWord.exe Update to SharePoint

Some example requests.

POST

POST /SharePoint%20Services(1)/_vti_bin/_vti_aut/author.dll HTTP/1.1Accept: auth/sicilyContent-Length: 20207Content-Type: application/x-vermeer-urlencodedX-Vermeer-Content-Type: application/x-vermeer-urlencodedConnection: Keep-Alivemethod=put+document%3a6%2e0%2e2%2e6356&service%5fname=%2fSharePoint+Services%281%29&document=%5bdocument%5fname%3dShared+Documents%2fSharePoint+Services%2edoc%3bmeta%5finfo%3d%5b%5d%5d&put%5foption=edit&comment=&keep%5fchecked%5fout=falsemethod=put+document:6.0.2.6356&service_name=/SharePoint+Services(1)&document=%5Bdocument_name=Shared+Documents/SharePoint+Services.doc;meta_info=%5B%5D%5D&put_option=edit&comment=&keep_checked_out=false

 

Response

HTTP/1.1 200 OKConnection: closeDate: Tue, 08 Nov 2005 21:26:55 GMTServer: Microsoft-IIS/6.0X-Powered-By: ASP.NETMicrosoftSharePointTeamServices: 6.0.2.6411Content-type: application/x-vermeer-rpc<html><head><title>vermeer RPC packet</title></head><body><p>method=put document:6.0.2.6356<p>message=successfully put document 'Shared Documents/SharePoint Services.doc' as 'Shared Documents/SharePoint Services.doc'<p>document=<ul><li>document_name=Shared Documents/SharePoint Services.doc<li>meta_info=<ul><li>vti_approvallevel<li>SR|<li>vti_categories<li>VW|<li>vti_filesize<li>IR|19968<li>vti_assignedto<li>SR|<li>Checked by<li>SW|Andrew M. Johnstone<li>Department<li>SW|Development<li>vti_modifiedby<li>SR|C22586_40180/administrator<li>vti_timecreated<li>TR|08 Nov 2005 21:26:56 -0000<li>vti_title<li>SR|SharePoint Services<li>vti_timelastmodified<li>TR|08 Nov 2005 21:26:56 -0000<li>_SharedFileIndex<li>SW|0000020000000000{54AD31DF-B8AF-4070-A579-F3A63D6C202F}http://sharepoint.hostelhost.com/SharePoint Services(1)/Shared Documents/SharePoint Services.doc<li>vti_author<li>SR|C22586_40180/administrator<li>vti_sourcecontrolversion<li>SR|V1<li>vti_sourcecontrolcookie<li>SR|fp_internal</ul></ul></body></html>


POST

POST /SharePoint%20Services(1)/_vti_bin/dws.asmx HTTP/1.1Content-Type: text/xml; charset=utf-8SOAPAction: http://schemas.microsoft.com/sharepoint/soap/dws/GetDwsMetaDataX-Office-Version: 11.0.6408User-Agent: Microsoft Office/11.0 (Windows NT 5.1; Microsoft Office Word 11.0.6408; Pro)Host: sharepoint.hostelhost.comContent-Length: 363Connection: Keep-AliveCache-Control: no-cacheCookie: HELM=Username=&Interface=standard%5FXP&ThemeColour=XP&NonSecureReturnURL=&Password=&LanguageCode=ENAuthorization: NTLM <?xml version='1.0' ?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  <s:Body>    <GetDwsMetaData xmlns="http://schemas.microsoft.com/sharepoint/soap/dws/">      <document>http://sharepoint.hostelhost.com/SharePoint%20Services(1)/Shared%20Documents/SharePoint%20Services.doc</document>      <id></id>      <minimal>false</minimal>    </GetDwsMetaData>  </s:Body></s:Envelope>


Response

HTTP/1.1 200 OKDate: Tue, 08 Nov 2005 21:26:59 GMTServer: Microsoft-IIS/6.0X-Powered-By: ASP.NETMicrosoftSharePointTeamServices: 6.0.2.6411X-AspNet-Version: 1.1.4322Cache-Control: private, max-age=0Content-Type: text/xml; charset=utf-8Content-Length: 6367<?xml version="1.0" encoding="utf-8"?><soap:Envelope  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <soap:Body>    <GetDwsMetaDataResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/dws/">      <GetDwsMetaDataResult>      <Results>        <SubscribeUrl>http://sharepoint.hostelhost.com/SharePoint Services(1)/_layouts/1033/SubNew.aspx</SubscribeUrl>        <MtgInstance />        <SettingUrl>http://sharepoint.hostelhost.com/SharePoint Services(1)/_layouts/1033/settings.aspx</SettingUrl>        <PermsUrl>http://sharepoint.hostelhost.com/SharePoint Services(1)/_layouts/1033/EditPrms.aspx</PermsUrl>        <UserInfoUrl>http://sharepoint.hostelhost.com/SharePoint Services(1)/_layouts/1033/UserEdit.aspx</UserInfoUrl>        <Roles>          <Role Name="Reader" Type="Reader" Description="Has read-only access to the Web site." />          <Role Name="Contributor" Type="Contributor" Description="Can add content to existing document libraries and lists." />          <Role Name="Web Designer" Type="WebDesigner" Description="Can create lists and document libraries and customize pages in the Web site." />          <Role Name="Administrator" Type="Administrator" Description="Has full control of the Web site." />        </Roles>        <Schema Name="Tasks">          <Field Name="Title" Type="Text" Required="True"><Choices /></Field>          <Field Name="Attachments" Type="Attachments" Required="False"><Choices /></Field>          <Field Name="Order" Type="Number" Required="False"><Choices /></Field>          <Field Name="Priority" Type="Choice" Required="False"><Choices><Choice>(1) High</Choice><Choice>(2) Normal</Choice><Choice>(3) Low</Choice></Choices></Field>          <Field Name="Status" Type="Choice" Required="False"><Choices><Choice>Not Started</Choice><Choice>In Progress</Choice><Choice>Completed</Choice><Choice>Deferred</Choice><Choice>Waiting on someone else</Choice></Choices></Field>          <Field Name="PercentComplete" Type="Number" Required="False"><Choices /></Field>          <Field Name="AssignedTo" Type="User" Required="False"><Choices /></Field>          <Field Name="Body" Type="Note" Required="False"><Choices /></Field>          <Field Name="StartDate" Type="DateTime" Required="False"><Choices /></Field>          <Field Name="DueDate" Type="DateTime" Required="False"><Choices /></Field>        </Schema>        <Schema Name="Documents" Url="Shared Documents">          <Field Name="FileLeafRef" Type="Invalid" Required="True"><Choices /></Field>          <Field Name="_SourceUrl" Type="Text" Required="False"><Choices /></Field>          <Field Name="_SharedFileIndex" Type="Text" Required="False"><Choices /></Field>          <Field Name="Order" Type="Number" Required="False"><Choices /></Field>          <Field Name="Title" Type="Text" Required="False"><Choices /></Field>        </Schema>        <Schema Name="Links">          <Field Name="Attachments" Type="Attachments" Required="False"><Choices /></Field>          <Field Name="Order" Type="Number" Required="False"><Choices /></Field>          <Field Name="URL" Type="URL" Required="True"><Choices /></Field>          <Field Name="Comments" Type="Note" Required="False"><Choices /></Field>        </Schema>        <ListInfo Name="Tasks">          <Moderated>False</Moderated>            <ListPermissions>              <InsertListItems />              <EditListItems />              <DeleteListItems />              <ManageLists />            </ListPermissions>          </ListInfo>          <ListInfo Name="Documents">            <Moderated>False</Moderated>            <ListPermissions>              <InsertListItems />              <EditListItems />              <DeleteListItems />              <ManageLists />            </ListPermissions>          </ListInfo>          <ListInfo Name="Links">            <Moderated>False</Moderated>            <ListPermissions>              <InsertListItems /><EditListItems /><DeleteListItems /><ManageLists /></ListPermissions>            </ListInfo>            <Permissions>              <ManageSubwebs /><ManageWeb /><ManageRoles /><ManageLists />              <InsertListItems /><EditListItems /><DeleteListItems />            </Permissions>            <HasUniquePerm>True</HasUniquePerm>            <WorkspaceType>DWS</WorkspaceType>            <IsADMode>False</IsADMode>            <DocUrl>http://sharepoint.hostelhost.com/SharePoint%20Services(1)/Shared%20Documents/SharePoint%20Services.doc</DocUrl>            <Minimal>False</Minimal>            <Results>              <Title>SharePoint Services</Title>              <LastUpdate>632670820194565000</LastUpdate>              <User>                <ID>1</ID>                <Name>C22586_40180administrator</Name>                <LoginName>C22586_40180administrator</LoginName>                <Email>andrew@ajohnstone.com</Email>                <IsDomainGroup>False</IsDomainGroup>                <IsSiteAdmin>True</IsSiteAdmin>              </User>              <Members>                <Member>                  <ID>1</ID>                  <Name>C22586_40180administrator</Name>                  <LoginName>C22586_40180administrator</LoginName>                  <Email>andrew@ajohnstone.com</Email>                  <IsDomainGroup>False</IsDomainGroup>                </Member>              </Members>              <Assignees>                <Member>                  <ID>1</ID>                  <Name>C22586_40180administrator</Name>                  <LoginName>C22586_40180administrator</LoginName>                </Member>              </Assignees>              <List Name="Tasks">                <ID>{A9D58464-55C3-477F-A18E-B18A75732A9F}</ID>              </List>              <List Name="Documents">                <ID>{E133F72B-8ECB-436B-8916-CD331678AC75}</ID>                <z:row ows_FileRef="Shared Documents/SharePoint Services.doc" ows_Title="SharePoint Services" ows_FSObjType="0" ows_Created="2005-11-08T21:26:55Z" ows_Author="1;#C22586_40180administrator" ows_Modified="2005-11-08T21:26:55Z" ows_Editor="1;#C22586_40180administrator" ows_ID="1" ows_ProgID="" xmlns:z="#RowsetSchema" />              </List>              <List Name="Links"><ID>{51BF4716-E5B7-4C0D-A6AE-93EF0645FF38}</ID></List>            </Results>          </Results>      </GetDwsMetaDataResult>    </GetDwsMetaDataResponse>  </soap:Body></soap:Envelope>
本文摘自:http://ajohnstone.com/archives/sharepoint-php/

 

原创粉丝点击