3

我正在尝试为Office Web Apps实现MS-FSSHTTP。具体来说,我只需要让 Word 工作。

OWA 服务器正在发送一个ExecuteCellStorageRequest请求,该请求遵循 FSSHTTP 标准(看起来像被屠杀的 SOAP)。

请求正文是没有信封的标准 SOAP 请求。它看起来像这样(为清楚起见而格式化):

<RequestVersion Version="2" MinorVersion="2" xmlns="http://schemas.microsoft.com/sharepoint/soap/"/>
<RequestCollection CorrelationId="4528ff55-db57-402f-894a-fcd23cb569c3" xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <Request RequestToken="0" Build="15.0.4481.1000" UserAgentClient="msword" UserAgentPlatform="wac" MetaData="99">
        <SubRequest SubRequestToken="1" Type="Cell">
            <SubRequestData BinaryDataSize="197" PartitionID="bbd4e3c0-21b4-463d-9279-9c5a9406aa8f">
                DAALAJzPKfM5lAabBgIAAO4CAABaBBYADW1zd29yZAd3YWN6AggAFRihD3cBFgIGAAUFABoEIADA49S7tCE9RpJ5nFqUBqqPigICAAk+AgQAAQAfAT4CBAACALoCAgAVHwE+AgQABwECA1QAA1G5+t6Eo6oNSqOoUgx3rHBzAQAAAADqbeOQaI5Gpm3DzbeeY5MBAAAAHwE+AgQABwECAywAAikwtZ5NpE1DT7hZsxzAcAZlAQAAAB8BhABBCwGsAgBVAwE=
            </SubRequestData>
        </SubRequest>
    </Request>
</RequestCollection>

我将此请求包装在标准的 SOAP 信封中,

$wrap_req = '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body>'.$req.'</SOAP-ENV:Body></SOAP-ENV:Envelope>';

这样我就可以将它传递给内置的 PHP SoapServer类(以免它崩溃而没有错误消息)。

处理时它会为我调用一个RequestVersion方法(我认为这是正确的;我无法确定该二进制消息的正面或反面)并产生响应。[它只是获取标签名称并以相同的名称调用函数。我认为这根本不是它所要求的。]

响应也应该是无信封的,所以我把它去掉,

$doc = new DOMDocument();
$doc->loadXML($resp);
$resp_body = $doc->saveXML($doc->firstChild->firstChild->firstChild->firstChild);

并寄回。看起来像这样:

<ResponseVersion xmlns="http://schemas.microsoft.com/sharepoint/soap/" Version="2" MinorVersion="0"/>

(我认为这是它正在寻找的响应,通过查看这个模式)。

请求标头还说它Expect是 sa 100-continue,因此我将 HTTP 100 状态代码连同我的响应一起发回。

我只能假设 OWA 服务器不喜欢我的响应,因为它会立即关闭我的连接,

2014/01/23 14:08:31 [info] 81976#0: *229 kevent() 报告客户端 192.168.0.10 关闭了 keepalive 连接

现在我很难过。

OWA 服务器没有给我任何类型的错误消息,所以我不知道可能出了什么问题或如何获取更多信息。我可以远程访问 OWA 机器,但在日志中看不到任何有用的信息。

有没有人有任何实现 MS-FSSHTTP 的经验(我的谷歌搜索表明一个响亮的“不”)或者知道如何进一步调试这个?我相信 OWA 只是一个在 IIS 上运行的 ASP.NET 应用程序,但 AFAICT 所有的源代码都是预编译的二进制文件。

4

0 回答 0