The purpose of the Describe request is to ask the server to send information about the content that is identified by the URL included in the request. A URL MUST be formed according to rules specified in [RFC1738].
The Describe request MUST be sent using the HTTP GET method. It SHOULD NOT include a Pragma header with the xPlayStrm (section 2.2.1.4.36) token, but it MAY include this token if the value is set to 0. The Describe request MUST NOT include the xPlayNextEntry (section 2.2.1.4.35) token on a Pragma header, and the request MUST NOT include the pipeline-request (section 2.2.1.4.16) token on a Pragma header.
A server that receives a GET request MUST treat it as a Describe request if the Pragma header is missing or if all of the following conditions are satisfied: The value of the xPlayStrm token on the Pragma header is 0, and the xPlayNextEntry token is missing from the Pragma header, and the pipeline-request token is missing from the Pragma header, and the stream-switch-entry (section 2.2.1.4.27) token is missing from the Pragma header.
If the request succeeds, the server MUST respond to the request with the $H (Header) packet (section 2.2.3.5) for the content. If the URL identifies a server-side playlist, the $H packet MUST pertain to the first entry, or current entry, in the playlist. The response SHOULD also contain $P packets (section 2.2.3.7) and an $M packet (section 2.2.3.6), as appropriate.
The Describe request can be sent by using either the HTTP 1.0 protocol, as specified in [RFC1945], or the HTTP 1.1 protocol, as specified in [RFC2616]. The response MUST NOT use Chunked Transfer Coding even if HTTP 1.1 is used.
The syntax of the Describe request is defined as follows.
WMS-Describe-Request = WMS-Describe-Req-Line
WMS-DescReq-Headers CRLF
WMS-Describe-Req-Line = "GET" SP Request-URI SP HTTP-Version CRLF
WMS-DescReq-Headers = *( DescReq-Header-REQ
/ DescReq-Header-OPT
/ DescReq-Pragma
/ HTTP-Header-Types )
DescReq-Header-REQ = User-Agent ; section 2.2.1.8
DescReq-Header-OPT = Cookie ; section 2.2.1.3
/ Supported ; section 2.2.1.7
/ X-Accept-Authentication ; section 2.2.1.9
/ X-Proxy-Client-Verb ; section 2.2.1.11
DescReq-Pragma = "Pragma: " #DescReq-Pragma-Types CRLF
DescReq-Pragma-Types = DescReq-Token-REQ
/ DescReq-Token-OPT
/ DescReq-Token-OPT11
DescReq-Token-REQ = no-cache ; section 2.2.1.4.12
DescReq-Token-OPT = / client-id ; section 2.2.1.4.5
/ packet-pair-experiment ; section 2.2.1.4.14
/ proxy-client-agent ; section 2.2.1.4.21
/ request-context ; section 2.2.1.4.23
/ xClientGuid ; section 2.2.1.4.33
DescReq-Token-OPT11 = pipeline-experiment ; section 2.2.1.4.15
/ version11-enabled ; section 2.2.1.4.30
The syntax of the Describe response is defined as follows.
WMS-Describe-Response = Status-Line
WMS-DescResp-Headers
CRLF
WMS-DescResp-Body
WMS-DescResp-Headers = *( DescResp-Header-REQ
/ DescResp-Header-OPT
/ DescResp-Pragma
/ HTTP-Header-Types )
DescResp-Header-REQ = Cache-Control ; section 2.2.1.1
/ Server ; section 2.2.1.5
DescResp-Header-OPT = Set-Cookie ; section 2.2.1.6
/ Supported ; section 2.2.1.7
/ X-StartupProfile ; section 2.2.1.12
DescResp-Pragma = "Pragma: " #DescResp-Pragma-Types CRLF
DescResp-Pragma-Types = DescResp-Token-REQ
/ DescResp-Token-OPT
/ DescResp-Token-OPT11
DescResp-Token-REQ = no-cache ; section 2.2.1.4.12
/ client-id ; section 2.2.1.4.5
/ features ; section 2.2.1.4.8
DescResp-Token-OPT = timeout ; section 2.2.1.4.29
/ version-info ; section 2.2.1.4.31
/ version-url ; section 2.2.1.4.32
/ packet-pair-experiment ; section 2.2.1.4.14
DescResp-Token-OPT11 = pipeline-experiment ; section 2.2.1.4.15
WMS-DescResp-Body = [ 3<$P Packet-Pair packet> ] ; section 2.2.3.7
[ <$M Metadata packet> ] ; section 2.2.3.6
<$H Header packet> ; section 2.2.3.5
The following example shows a Describe request.
GET /welcome.asf HTTP/1.0
Accept: */*
User-Agent: NSPlayer/10.0.0.3802
Host: SampleServer
X-Accept-Authentication: Negotiate, NTLM, Digest, Basic
Pragma: no-cache
Pragma: packet-pair-experiment=1
Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.predstrm, com.microsoft.wm.startupprofile
Pragma: xClientGUID={11223344-1122-1122-1122-AABBCCDDEEFF}
Accept-Language: en-US, *;q=0.1
122-1122-1122-AABBCCDDEEFF}
Accept-Language: en-US, *;q=0.1