Beispiel #1
0
        public object WriteEnd(GetResponseStreamCallback aCallback)
        {
            UTF8Encoding encoding = new UTF8Encoding();

            byte[] message = encoding.GetBytes(iWriteDocument.OuterXml);

            HttpWebRequest request   = null;
            Stream         reqStream = null;

            try
            {
                request           = WebRequest.Create(iService.ControlUri.AbsoluteUri) as HttpWebRequest;
                request.KeepAlive = false;
                request.Pipelined = false;
                request.Proxy     = iService.WebProxy;

                request.Method      = "POST";
                request.ContentType = "text/xml; charset=\"utf-8\"";
                request.Headers.Add("SOAPACTION", string.Format("\"{0}#{1}\"", Upnp.ServiceTypeToString(iService.Type), iAction.Name));
                request.ContentLength    = message.Length;
                request.Timeout          = kControlInvokeTimeout;
                request.ReadWriteTimeout = kControlInvokeTimeout;

                if (aCallback == null)
                {
                    reqStream = request.GetRequestStream();
                    reqStream.Write(message, 0, message.Length);
                }
                else
                {
                    WebRequestPool.QueueJob(new JobSendRequest(aCallback, request, message));
                }
            }
            finally
            {
                if (aCallback == null && reqStream != null)
                {
                    reqStream.Close();
                    reqStream.Dispose();
                }

                iWriteDocument = null;
                iActionNode    = null;
            }

            return(request);
        }
Beispiel #2
0
 public JobGetResponse(GetResponseStreamCallback aCallback, object aResult)
 {
     iResult = aResult;
     iCallback = aCallback;
 }
Beispiel #3
0
 public JobSendRequest(GetResponseStreamCallback aCallback, HttpWebRequest aRequest, byte[] aMessage)
 {
     iRequest = aRequest;
     iMessage = aMessage;
     iCallback = aCallback;
 }