Как отлаживать OWA/COBALT/MS-FSSHTTP?

Я пытаюсь реализовать MS-FSSHTTP для Office Web Apps. В частности, мне просто нужно, чтобы Word работал.

Сервер OWA отправляет запрос ExecuteCellStorageRequest, который соответствует стандарту FSSHTTP (выглядит как перерезанный SOAP).

Тело запроса является стандартным SOAP-запросом без Envelope. Это выглядит так (отформатировано для ясности):

<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са 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 (мои поиски в Google предлагают громкое "нет") или есть идеи, как отладить это дальше? Я считаю, что OWA - это всего лишь приложение ASP.NET, работающее на IIS, но AFAICT - все исходные коды предварительно скомпилированы в двоичном виде.

0 ответов

Другие вопросы по тегам