4.2 Issue ROP Commands to the Server
In this scenario the client sends a request, as described in section 2.2.2.1, containing ROPs to the server using the Execute request type, as described in section 2.2.3.3.1, including a <REQUEST BODY> as described in section 2.2.4.2.1. As described in section 3.1.5.2, the request includes all the cookies related to the Session Context that the client has saved.
Client request
-
POST <Autodiscover-provided endpoint> HTTP/1.1 Host: <URL of the host server> Content-Length: <length of REQUEST BODY> Content-Type: application/mapi-http Cookie: <session context cookie>=<opaque string> Cookie: <return sequence cookie>=<opaque string> X-RequestType: Execute X-ClientInfo: <opaque string> X-RequestId: <unique identifier> X-ClientApplication: <client version> <REQUEST BODY>
The response to an Execute request type is "chunked", as described in section 3.2.5.2. The initial response contains the PROCESSING meta-tag, as described in section 2.2.7. Depending on how long the processing takes, the initial response is followed by interim "keep-alive" responses containing the PENDING meta-tag. When the processing is completed, the final chunk contains the DONE meta-tag; the X-ResponseCode value, as described in section 2.2.3.3.3, for the completed response; and the Execute request type request body.
Server response
-
HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/mapi-http Cookie: MapiContext=<opaque string> Cookie: MapiSequence=<opaque string> X-PendingPeriod: 15000 X-RequestType: Execute X-RequestId: <unique identifier> X-ResponseCode: 0 X-ClientInfo: <opaque string> X-ServerApplication: <server version> X-ExpirationInfo: <milliseconds> <CRLF> C<CRLF> PROCESSING<CRLF> <CRLF>
Every 15 seconds, as indicated by the value of the X-PendingPeriod header described in section 2.2.3.3.5, the server returns another keep-alive chunk:
-
9<CRLF> PENDING<CRLF> <CRLF>
When the request finally completes, the server returns the DONE meta-tag, followed by the <RESPONSE BODY>. The final character is "0", which is the last-chunk indicator, as described in [RFC2616] section 3.6.1.
-
?<CRLF> DONE<CRLF> X-ResponseCode: 0<CRLF> X-ElapsedTime: <milliseconds> X-StartTime: <date/time> <CRLF> <RESPONSE BODY><CRLF> <CRLF> 0<CRLF> <CRLF>