ExtensionExecuteCursorMethod

Вызывает метод серверного расширения.

Запрос

POST /DocsVision/StorageServer/StorageServerService.asmx HTTP/1.1
Host: DOCSVISION_SERVER.COM
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://schemas.docsvision.com/Platform/2009-02-03/StorageServer/ExtensionExecuteCursorMethod"

<?xml version="1.0" encoding="utf-8"?>
<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>
    <ExtensionExecuteCursorMethod xmlns="http://schemas.docsvision.com/Platform/2009-02-03/StorageServer/">
      <sessionId>guid</sessionId>
      <methodCall>string</methodCall>
      <compressed>boolean</compressed>
    </ExtensionExecuteCursorMethod>
  </soap:Body>
</soap:Envelope>
Параметры
sessionId

Идентификатор пользовательской сессии

methodCall

Вызываемый метод

compressed

Признак сжатия данных в methodCall

Строка methodCall должна соответствовать формату элемента MethodCall, приведенному в схеме ServerRequests.xsd:

<xsd:element name="MethodCall">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="Parameter" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute name="Name" type="xsd:string" use="optional"/>
              <xsd:attribute name="Type" use="required">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="bool"/>
                    <xsd:enumeration value="byte"/>
                    <xsd:enumeration value="short"/>
                    <xsd:enumeration value="integer"/>
                    <xsd:enumeration value="long"/>
                    <xsd:enumeration value="single"/>
                    <xsd:enumeration value="double"/>
                    <xsd:enumeration value="decimal"/>
                    <xsd:enumeration value="uniqueidentifier"/>
                    <xsd:enumeration value="char"/>
                    <xsd:enumeration value="string"/>
                    <xsd:enumeration value="datetime"/>
                    <xsd:enumeration value="text"/>
                    <xsd:enumeration value="binary"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="MethodName" type="xsd:string"/>
    <xsd:attribute name="ObjectName" type="xsd:string" use="optional"/>
  </xsd:complexType>
</xsd:element>

Ответ

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<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>
    <ExtensionExecuteCursorMethodResponse xmlns="http://schemas.docsvision.com/Platform/2009-02-03/StorageServer/">
      <cursorInfo>
        <ID>guid</ID>
        <PageCount>unsignedInt</PageCount>
        <RowCount>unsignedInt</RowCount>
        <FirstPage>string</FirstPage>
        <UsingCompression>boolean</UsingCompression>
      </cursorInfo>
    </ExtensionExecuteCursorMethodResponse>
  </soap:Body>
</soap:Envelope>

При необходимости будет открыт серверный курсор на данные.

Пример запроса

session.headers['SOAPAction'] = "http://schemas.docsvision.com/Platform/2009-02-03/StorageServer/ExtensionExecuteCursorMethod" (1)

body = """<?xml version="1.0" encoding="utf-8"?>
<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>
    <ExtensionExecuteCursorMethod xmlns="http://schemas.docsvision.com/Platform/2009-02-03/StorageServer/">
      <sessionId>6565c75b-298d-e511-9417-90e6ba57b9f8</sessionId>
      <methodCall>&lt;MethodCall ObjectName=&quot;SampleExtension&quot; MethodName=&quot;GetCard&quot;&gt;&lt;Parameter Name=&quot;cardId&quot; Type=&quot;uniqueidentifier&quot; xmlns:dt=&quot;urn:schemas-microsoft-com:datatypes&quot; dt:dt=&quot;string&quot;&gt;{B87B6FEC-E092-4D37-ABB2-C13E2000B6E3}&lt;/Parameter&gt;&lt;/MethodCall&gt;</methodCall>
      <compressed>false</compressed>
    </ExtensionExecuteCursorMethod>
  </soap:Body>
</soap:Envelope>""" (2)

response = session.post(url, data=body) (3)

print(response.content) (4)
1 Изменяем цель запроса в заголовке запроса.
2 SOAP-сообщение.
3 Отправляем SOAP-сообщение.
4 Ответ SOAP.