Esempio n. 1
0
 private void BeginRequest(WebRequest request, Action <HttpStatusCode, string, OAuthTokens> onComplete, Action <Uri, Exception> onError, string data)
 {
     request.BeginGetRequestStream(HandleRequestCallback,
                                   new RequestContext <string, OAuthTokens>
     {
         Body       = data,
         Request    = request,
         OnComplete = onComplete,
         OnError    = onError
     });
 }
        private void cmdGetDataXmlHttp_Click(object sender, RoutedEventArgs e)
        {
            Uri        address = new Uri("http://api.flickr.com/services/xmlrpc/");
            WebRequest request = WebRequest.Create(address);

            request.Method      = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            // Prepare the request asynchronously.
            request.BeginGetRequestStream(CreateRequest, request);
        }
Esempio n. 3
0
        void IRpcClientTransaction.SendRequest <T>(RpcRequestHeader request, T args, Action <RpcResponseHeader> callback, int timeout)
        {
            _callback   = callback;
            _serviceUrl = string.Format("{0}/{1}.{2}", request.ServerUri, request.Service, request.Method);

            _webRequest             = HttpWebRequest.Create(_serviceUrl);
            _webRequest.Method      = "POST";
            _webRequest.Proxy       = null;
            _webRequest.ContentType = "multipart/byteranges";
            _webRequest.Headers.Add(HttpRequestHeader.From, request.ServiceAtComputer);
            _webRequest.Headers.Add(HttpRequestHeader.Pragma, _serviceUrl);
            _webRequest.Headers.Add(HttpRequestHeader.Cookie, "to=" + ObjectHelper.ToString(request.ToUri));

            byte[] buffer = null;
            if (!request.HasBody)
            {
                _webRequest.Headers.Add("Null", "true");
                _webRequest.ContentLength = 0;
            }
            else
            {
                buffer = ProtoBufSerializer.ToByteArray <T>(args);
                _webRequest.ContentLength = buffer.Length;
            }

            timeout = timeout > 0 ? timeout : _channel.Timeout;

            if (timeout > 0)
            {
                _waitHandle = new ManualResetEvent(false);
                ThreadPool.RegisterWaitForSingleObject(_waitHandle, new WaitOrTimerCallback(TimeoutCallback), this, timeout, true);
            }
            if (_webRequest.ContentLength == 0)
            {
                _webRequest.BeginGetResponse(new AsyncCallback(ResponseCallback), this);
            }
            else
            {
                _webRequest.BeginGetRequestStream(
                    delegate(IAsyncResult asyncResult) {
                    try {
                        Stream stream = _webRequest.EndGetRequestStream(asyncResult);
                        stream.Write(buffer, 0, buffer.Length);
                        stream.Close();
                        _webRequest.BeginGetResponse(new AsyncCallback(ResponseCallback), this);
                    } catch (Exception ex) {
                        var resp = RpcResponseHeader.CreateError(RpcErrorCode.SendFailed, ex);
                        _callback(resp);
                    }
                },
                    this
                    );
            }
        }
Esempio n. 4
0
        public static Stream GetWebRequestStream(this WebRequest request)
        {
            var autoResetEvent = new AutoResetEvent(false);

            var asyncResult = request.BeginGetRequestStream(r => autoResetEvent.Set(), null);

            // Wait until the call is finished
            autoResetEvent.WaitOne();

            return(request.EndGetRequestStream(asyncResult));
        }
Esempio n. 5
0
        // extension method for web request to get the request stream with a proper timeout
        public static Stream GetRequestStreamWithTimeout(this WebRequest request)
        {
            IAsyncResult worker = request.BeginGetRequestStream(null, null);

            if (!worker.AsyncWaitHandle.WaitOne(request.Timeout))
            {
                TimeoutException ex = new TimeoutException();
                throw new WebException(ex.Message, ex, WebExceptionStatus.Timeout, null);
            }
            return(request.EndGetRequestStream(worker));
        }
Esempio n. 6
0
        private void Send(XDocument resultDocument)
        {
            _resultDocument = resultDocument;

            string     serverURL  = OperationsOnSettings.Instance.ServerURL;
            WebRequest webRequest = WebRequest.Create(string.Format("{0}PostResults", serverURL));

            _webRequest       = webRequest;
            webRequest.Method = "POST";
            webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
        }
Esempio n. 7
0
 public void Execute()
 {
     if (WriteToRequest == null)
     {
         DoRequest();
     }
     else
     {
         requestAsyncResult = Request.BeginGetRequestStream(x => WriteToRequestCallback(), null);
         ThreadPool.RegisterWaitForSingleObject(requestAsyncResult.AsyncWaitHandle, TimeOutCallback, null, Request.Timeout, true);
     }
 }
Esempio n. 8
0
        public Stream GetRequestStream(WebRequest request)
        {
            ManualResetEvent evt           = new ManualResetEvent(false);
            Stream           requestStream = null;

            request.BeginGetRequestStream((IAsyncResult ar) => {
                requestStream = request.EndGetRequestStream(ar);
                evt.Set();
            }, null);
            evt.WaitOne();
            return(requestStream);
        }
Esempio n. 9
0
            internal Stream GetRequestStream(WebRequest request)
            {
                Stream stream = null;

                request.BeginGetRequestStream(a =>
                {
                    stream = request.EndGetRequestStream(a);
                    allDone.Set();
                }, null);
                allDone.WaitOne(TimeSpan.FromSeconds(30));
                return(stream);
            }
    static void Main()
    {
        //<Snippet1>
        // Create a new request to the mentioned URL.
        WebRequest myWebRequest = WebRequest.Create("http://www.contoso.com");

        // Create an instance of the RequestState and assign
        // 'myWebRequest' to it's request field.
        RequestState myRequestState = new RequestState();

        myRequestState.request   = myWebRequest;
        myWebRequest.ContentType = "application/x-www-form-urlencoded";

        // Set the 'Method' property  to 'POST' to post data to a Uri.
        myRequestState.request.Method = "POST";
        //</Snippet1>
        // Start the Asynchronous 'BeginGetRequestStream' method call.
        IAsyncResult r = (IAsyncResult)myWebRequest.BeginGetRequestStream(
            new AsyncCallback(ReadCallback), myRequestState);

        // Pause the current thread until the async operation completes.
        Console.WriteLine("main thread waiting...");
        allDone.WaitOne();
        // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
        WebResponse myWebResponse = myWebRequest.GetResponse();

        Console.WriteLine("The string has been posted.");
        Console.WriteLine("Please wait for the response...");

        Stream       streamResponse = myWebResponse.GetResponseStream();
        StreamReader streamRead     = new StreamReader(streamResponse);

        Char[] readBuff = new Char[256];
        int    count    = streamRead.Read(readBuff, 0, 256);

        Console.WriteLine("\nThe contents of the HTML page are ");

        while (count > 0)
        {
            String outputData = new String(readBuff, 0, count);
            Console.Write(outputData);
            count = streamRead.Read(readBuff, 0, 256);
        }

        // Close the Stream Object.
        streamResponse.Close();
        streamRead.Close();


        // Release the HttpWebResponse Resource.
        myWebResponse.Close();
    }
Esempio n. 11
0
 private static void BeginRequest(WebRequest request, Action <HttpStatusCode, string, OAuthTokens> onComplete, Action <Uri, Exception> onError, string data)
 {
     request.Method      = "POST";
     request.ContentType = "application/x-www-form-urlencoded";
     request.BeginGetRequestStream(HandleRequestCallback,
                                   new RequestContext <string, OAuthTokens>
     {
         Body       = data,
         Request    = request,
         OnComplete = onComplete,
         OnError    = onError
     });
 }
Esempio n. 12
0
        /// <summary>
        /// Method creates the web request and sends it immediately.
        /// Relies upon the requestState PacketId and MessageList being
        /// set appropriately.
        /// </summary>
        /// <param name="requestState">Request state.</param>
        private void InternalSendMessage(RequestState requestState)
        {
            // bundle up the data into a string
            Dictionary <string, object> packet = new Dictionary <string, object>();

            packet[OperationParam.ServiceMessagePacketId.Value]  = requestState.PacketId;
            packet[OperationParam.ServiceMessageSessionId.Value] = m_sessionID;
            packet[OperationParam.ServiceMessageMessages.Value]  = requestState.MessageList;

            string jsonRequestString = JsonWriter.Serialize(packet);
            string sig = CalculateMD5Hash(jsonRequestString + m_secretKey);

            byte[] byteArray = Encoding.UTF8.GetBytes(jsonRequestString);

            requestState.Signature = sig;
            requestState.ByteArray = byteArray;

            if (m_debugPacketLossRate > 0.0)
            {
                System.Random r = new System.Random();
                requestState.LoseThisPacket = r.NextDouble() > m_debugPacketLossRate;
            }

            if (!requestState.LoseThisPacket)
            {
                #if !(DOT_NET)
                Dictionary <string, string> formTable = new Dictionary <string, string>();
                formTable["Content-Type"] = "application/json; charset=utf-8";
                formTable["X-SIG"]        = sig;
                WWW request = new WWW(m_serverURL, byteArray, formTable);
                #else
                WebRequest request = WebRequest.Create(m_serverURL);
                request.ContentType = "application/json; charset=utf-8";
                request.Method      = "POST";
                request.Headers.Add("X-SIG", sig);
                request.ContentLength = byteArray.Length;
                // TODO: Convert to using a task as BeginGetRequestStream can block for minutes
                requestState.AsyncResult = request.BeginGetRequestStream(new AsyncCallback(GetRequestCallback), requestState);
                #endif

                requestState.WebRequest = request;
            }
            requestState.RequestString = jsonRequestString;
            requestState.TimeSent      = DateTime.Now;

            ResetIdleTimer();

            m_brainCloudClientRef.Log("OUTGOING "
                                      + (requestState.Retries > 0 ? " Retry(" + requestState.Retries + "): " : ": ")
                                      + jsonRequestString);
        }
Esempio n. 13
0
        public void CustomIsolatedStorageWebRequest()
        {
            IWebRequestCreate creator = (IWebRequestCreate) new IsolatedStorageWebRequest();

            Assert.IsTrue(WebRequest.RegisterPrefix("iso", creator), "iso-1");
            Assert.IsFalse(WebRequest.RegisterPrefix("iso", creator), "iso-2");

            WebRequest wr = WebRequest.Create(new Uri("iso://site/data.log"));

            wr.Method = "SAVE";

            IAsyncResult result = wr.BeginGetRequestStream(null, String.Empty);

            result.AsyncWaitHandle.WaitOne();
            Stream s = wr.EndGetRequestStream(result);

            using (StreamWriter sw = new StreamWriter(s)) {
                sw.WriteLine("hello");
            }

            result = wr.BeginGetResponse(null, String.Empty);
            result.AsyncWaitHandle.WaitOne();
            Assert.IsNull(wr.EndGetResponse(result), "Response-Write");

            wr.Method = "LOAD";
            // should be in response but that would require a lot of extra code ;-)
            result = wr.BeginGetRequestStream(null, String.Empty);
            result.AsyncWaitHandle.WaitOne();
            s = wr.EndGetRequestStream(result);

            using (StreamReader sr = new StreamReader(s)) {
                Assert.IsTrue(sr.ReadToEnd().StartsWith("hello"), "ReadToEnd");
            }

            result = wr.BeginGetResponse(null, String.Empty);
            result.AsyncWaitHandle.WaitOne();
            Assert.IsNull(wr.EndGetResponse(result), "Response-Read");
        }
Esempio n. 14
0
        public Response Send(Event e)
        {
            Validate(e);
            string json = GenerateRequestJSONString(e);

            // Make POST request
            WebRequest request = WebRequest.Create(ClusterURL + "/save");

            request.ContentType = "text/json";
            request.Method      = "POST";

            // Set JSON data
            AutoResetEvent autoResetEventStream = new AutoResetEvent(false);
            IAsyncResult   asyncResultStream    = request.BeginGetRequestStream(r => autoResetEventStream.Set(), null);

            // Wait until tit's finished
            autoResetEventStream.WaitOne();
            Stream       stream       = request.EndGetRequestStream(asyncResultStream) as Stream;
            StreamWriter streamWriter = new StreamWriter(stream);

            streamWriter.Write(json);
            streamWriter.Flush();

            // Send and wait
            AutoResetEvent autoResetEvent = new AutoResetEvent(false);
            IAsyncResult   asyncResult    = request.BeginGetResponse(r => autoResetEvent.Set(), null);

            // Wait until the call is finished
            autoResetEvent.WaitOne();
            HttpWebResponse response = request.EndGetResponse(asyncResult) as HttpWebResponse;
            int             code     = (int)response.StatusCode;

            if (code != 200)
            {
                throw new WebException(code.ToString() + ": " + ClusterURL + "/save isn't reachable");
            }

            // Parse JSON body
            string body;

            using (var sr = new StreamReader(response.GetResponseStream()))
            {
                body = sr.ReadToEnd();
            }

            // Decode JSON string into Response object
            Response decoded = JsonConvert.DeserializeObject <Response>(body);

            return(decoded);
        }
Esempio n. 15
0
 public void Post <T>(WebRequest request, T entity, Action <HttpStatusCode, string> onComplete, Action <Uri, Exception> onError)
 {
     SetStandardHeaders(request, _credentials.Maybe(_ => _.Username), _credentials.Maybe(_ => _.Password));
     request.Method      = "POST";
     request.ContentType = "application/json";
     request.BeginGetRequestStream(HandleRequestCallback <T>,
                                   new RequestContext <T, string>
     {
         Body       = entity.ToJson(),
         Request    = request,
         OnComplete = (code, s, response) => onComplete(code, s),
         OnError    = onError,
     });
 }
Esempio n. 16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="postData"></param>
        /// <param name="contentType"></param>
        public void SendRequest(Uri uri, byte[] postData, string contentType)
        {
            _webRequest        = WebRequest.Create(uri);
            _webRequest.Method = Method;

            if (postData != null)
            {
                _webRequest.ContentType = contentType;
                _webRequest.BeginGetRequestStream(BeginRequest, postData);
            }
            else
            {
                _webRequest.BeginGetResponse(BeginResponse, null);
            }
        }
Esempio n. 17
0
        private static Stream GetRequestStreamInternal(WebRequest request)
        {
            // build the envent
            using (var revent = new ManualResetEvent(false))
            {
                // start the async call
                IAsyncResult result = request.BeginGetRequestStream(CallStreamCallback, revent);

                // wait for event
                revent.WaitOne();

                // return data stream
                return(request.EndGetRequestStream(result));
            }
        }
Esempio n. 18
0
    public static Task <Stream> GetRequestStreamAsync(this WebRequest webRequest)
    {
        TaskCompletionSource <Stream> taskComplete = new TaskCompletionSource <Stream>();

        webRequest.BeginGetRequestStream(arg =>
        {
            try
            {
                Stream requestStream = webRequest.EndGetRequestStream(arg);
                taskComplete.TrySetResult(requestStream);
            }
            catch (Exception ex) { taskComplete.SetException(ex); }
        }, webRequest);
        return(taskComplete.Task);
    }
        private static void SendRequestToConsulo(string url, JSONClass jsonClass)
        {
            WebRequest request = WebRequest.Create("http://localhost:" + PluginConstants.ourPort + "/api/" + url);

            request.Timeout     = ourTimeout;
            request.Method      = "POST";
            request.ContentType = "application/json; charset=utf-8";

            WebRequestState state = new WebRequestState
            {
                Request = request,
                Json    = jsonClass.ToString(),
            };

            request.BeginGetRequestStream(new AsyncCallback(WriteCallback), state);
        }
 /// <summary>
 /// PUT - asynchronous - using actions as handlers
 /// </summary>
 /// <typeparam name="TRequest"></typeparam>
 /// <typeparam name="TResponse"></typeparam>
 /// <param name="request"></param>
 /// <param name="entity"></param>
 /// <param name="onComplete"></param>
 /// <param name="onError"></param>
 public void Put <TRequest, TResponse>(WebRequest request, TRequest entity, Action <HttpStatusCode, string, TResponse> onComplete,
                                       Action <Uri, Exception> onError)
     where TResponse : class
 {
     ApiRequestHelper.SetStandardHeaders(request, _configuration, _credentials, _oauth);
     request.Method      = "PUT";
     request.ContentType = "application/json";
     request.BeginGetRequestStream(HandleRequestCallback <TResponse>,
                                   new RequestContext <TResponse>
     {
         Body       = entity.ToJson(),
         Request    = request,
         OnComplete = onComplete,
         OnError    = onError,
     });
 }
        private void cmdGetData_Click(object sender, RoutedEventArgs e)
        {
            Uri address = new Uri("http://localhost:" +
                                  HtmlPage.Document.DocumentUri.Port + "/ASPWebSite/PopulationService.ashx");

            WebRequest request = WebRequest.Create(address);

            request.Method      = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            // Store the year you want to use.
            searchYear = txtYear.Text;

            // Prepare the request asynchronously.
            request.BeginGetRequestStream(CreateRequest, request);
        }
Esempio n. 22
0
        public async void upload_file(StorageFile file)
        {
            if (file == null)
            {
                file =
                    await
                    StorageFile.GetFileFromApplicationUriAsync(
                        new Uri("ms-appx:///Assets/SplashScreen.scale-200.png"));
            }
            string     UP_HOST = "http://up.qiniu.com";
            string     url     = UP_HOST;
            WebRequest request = WebRequest.Create(url);

            request.Method = "POST";
            request.BeginGetRequestStream(async result =>
            {
                HttpWebRequest http = (HttpWebRequest)result.AsyncState;
                byte[] buffer       = new byte[1024];
                using (Stream stream = http.EndGetRequestStream(result))
                {
                    //using (Windows.Storage.StorageStreamTransaction transaction = await file.OpenTransactedWriteAsync())
                    //{
                    //    using (resource)
                    //    {

                    //    }
                    //}
                    using (IRandomAccessStream read_stream = await file.OpenAsync(FileAccessMode.Read))
                    {
                        using (DataReader data_reader = new DataReader(read_stream))
                        {
                            ulong size = read_stream.Size;
                            if (size <= uint.MaxValue)
                            {
                                await data_reader.LoadAsync((uint)size);
                                buffer = new byte[size];
                                data_reader.ReadBytes(buffer);
                            }
                        }
                    }
                    stream.Write(buffer, 0, buffer.Length);

                    http.BeginGetResponse(response_call_back, http);
                }
            }, request);
        }
Esempio n. 23
0
 /// <summary>
 /// 发出一个异步 POST 请求。
 /// </summary>
 /// <param name="url">请求的 url。</param>
 /// <param name="param">Post 请求的参数。</param>
 /// <param name="success">请求成功时执行的方法。</param>
 /// <param name="failure">请求失败时执行的方法。</param>
 public static void PostAsync(string url, object param = null, Action <string> success = null, Action <WebException> failure = null)
 {
     try
     {
         if (string.IsNullOrWhiteSpace(url) == true)
         {
             throw new ArgumentException("url 不能为空。");
         }
         if (url.Contains("://") == false)
         {
             url = "http://" + url;
         }
         WebRequest request = HttpWebRequest.Create(new Uri(url));
         request.Method      = "POST";
         request.ContentType = @"application/x-www-form-urlencoded";
         byte[] bytes = Encoding.UTF8.GetBytes(ObjectToRequestData(param));
         request.ContentLength = bytes.Length;
         request.BeginGetRequestStream((IAsyncResult result) =>
         {
             using (Stream stream = request.EndGetRequestStream(result))
             {
                 stream.Write(bytes, 0, bytes.Length);
             }
             request.BeginGetResponse((IAsyncResult result2) =>
             {
                 using (WebResponse response = request.EndGetResponse(result2))
                 {
                     using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                     {
                         if (success != null)
                         {
                             success(sr.ReadToEnd());
                         }
                     }
                 }
             }, request);
         }, request);
     }
     catch (WebException ex)
     {
         if (failure != null)
         {
             failure(ex);
         }
     }
 }
Esempio n. 24
0
        public string Proxy(string szURL, string PostData)
        {
            if (ConfigurationManager.AppSettings["RAgProxyDomain"] != null)
            {
                szURL = ConfigurationManager.AppSettings["RAgProxyDomain"] + szURL.Substring(szURL.IndexOf("/BFWglobal"));
            }
            else
            {
                szURL = "http://int-bcs.bedfordstmartins.com" + szURL.Substring(szURL.IndexOf("/BFWglobal"));
            }
            WebRequest request = WebRequest.Create(szURL);

            request.Method = "POST";
            RequestState state = new RequestState
            {
                request = request
            };

            request.ContentType  = "application/x-www-form-urlencoded";
            state.request.Method = "POST";
            state.progress       = state.progress + "Method set ----\n";
            state.PostData       = PostData;
            state.progress       = state.progress + "PostData set ----\n";
            request.BeginGetRequestStream(new AsyncCallback(RAgLocalWebService.ReadCallback), state);
            allDone.WaitOne();
            WebResponse response = request.GetResponse();

            state.progress = state.progress + "Request sent ----\n";
            Stream       responseStream = response.GetResponseStream();
            StreamReader reader         = new StreamReader(responseStream);

            char[] buffer = new char[0x100];
            int    length = reader.Read(buffer, 0, 0x100);
            string str    = "";

            while (length > 0)
            {
                string str2 = new string(buffer, 0, length);
                str    = str + str2;
                length = reader.Read(buffer, 0, 0x100);
            }
            responseStream.Close();
            reader.Close();
            response.Close();
            return(str);
        }
    // Thực thi
    public string Perform()
    {
        string result = "";
        // Create a new request to the mentioned URL.
        WebRequest myWebRequest = WebRequest.Create("http://www.google.com/translate_t?langpair=" + Language);

        // Create an instance of the RequestState and assign
        // 'myWebRequest' to it's request field.
        RequestState myRequestState = new RequestState();

        myRequestState.request   = myWebRequest;
        myWebRequest.ContentType = "application/x-www-form-urlencoded";

        // Set the 'Method' property  to 'POST' to post data to a Uri.
        myRequestState.request.Method = "POST";
        // Start the Asynchronous 'BeginGetRequestStream' method call.
        IAsyncResult r = (IAsyncResult)myWebRequest.BeginGetRequestStream(
            new AsyncCallback(ReadCallback), myRequestState);

        // Pause the current thread until the async operation completes.
        allDone.WaitOne();
        // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
        WebResponse myWebResponse = myWebRequest.GetResponse();

        Stream       streamResponse = myWebResponse.GetResponseStream();
        StreamReader streamRead     = new StreamReader(streamResponse, Encoding.Default, true);

        string tempString = streamRead.ReadToEnd();
        string szMau      = "<div id=result_box dir=\"ltr\">";
        int    index1     = tempString.IndexOf(szMau) + szMau.Length;
        int    index2     = tempString.IndexOf("</div>", index1);

        result = tempString.Substring(index1, index2 - index1);
        result = result.Replace("&#39;", "'");
        result = result.Replace("&quot;", "\"");
        result = result.Replace("&lt;", "<");
        result = result.Replace("&gt;", ">");
        // Close the Stream Object.
        streamResponse.Close();
        streamRead.Close();

        // Release the HttpWebResponse Resource.
        myWebResponse.Close();
        return(result);
    }
Esempio n. 26
0
        /// <summary>
        /// get the request stream asynchronously
        /// </summary>
        /// <param name="request">the request</param>
        /// <returns>the request stream to write on</returns>
        public static Task <Stream> GetRequestStreamAsync(this WebRequest request)
        {
            var taskComplete = new TaskCompletionSource <Stream>();

            request.BeginGetRequestStream(asyncStream =>
            {
                try
                {
                    Stream requestStream = (Stream)request.EndGetRequestStream(asyncStream);
                    taskComplete.TrySetResult(requestStream);
                }
                catch (Exception e)
                {
                    taskComplete.TrySetException(e);
                }
            }, request);
            return(taskComplete.Task);
        }
        private static Stream getRequestStream(WebRequest request)
        {
            Stream           requestStream      = null;
            ManualResetEvent getRequestFinished = new ManualResetEvent(false);

            AsyncCallback callBack = new AsyncCallback(ar =>
            {
                var req       = (HttpWebRequest)ar.AsyncState;
                requestStream = req.EndGetRequestStream(ar);
                getRequestFinished.Set();
            });

            var async = request.BeginGetRequestStream(callBack, request);

            getRequestFinished.WaitOne();

            return(requestStream);
        }
        public static Task <Stream> GetRequestStreamAsync(this WebRequest request)
        {
            var taskSource = new TaskCompletionSource <Stream>();

            request.BeginGetRequestStream(ar =>
            {
                try
                {
                    var webRequest = ar.AsyncState as WebRequest;
                    var stream     = webRequest.EndGetRequestStream(ar);
                    taskSource.TrySetResult(stream);
                }
                catch (Exception ex)
                {
                    taskSource.TrySetException(ex);
                }
            }, request);
            return(taskSource.Task);
        }
Esempio n. 29
0
        public static void MakeRequest(string requestUrl, string data,
                                       ReplyDelegate action)
        {
            ServicePointManagerTimeoutSupport.ResetHosts();
            WebRequest request = WebRequest.Create(requestUrl);

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";

            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int    length = (int)buffer.Length;

            request.ContentLength = length;

            request.BeginGetRequestStream(delegate(IAsyncResult res)
            {
                Stream requestStream = request.EndGetRequestStream(res);

                requestStream.Write(buffer, 0, length);

                request.BeginGetResponse(delegate(IAsyncResult ar)
                {
                    string reply = String.Empty;

                    using (WebResponse response = request.EndGetResponse(ar))
                    {
                        try
                        {
                            using (Stream s = response.GetResponseStream())
                                using (StreamReader r = new StreamReader(s))
                                    reply = r.ReadToEnd();
                        }
                        catch (System.InvalidOperationException)
                        {
                        }
                    }

                    action(requestUrl, data, reply);
                }, null);
            }, null);
        }
Esempio n. 30
0
        /// <summary>
        /// Send http request from lua
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="method"></param>
        /// <param name="headers"></param>
        /// <param name="callback"></param>
        public void lua_send_http_request(String url, String data, String method, String userAgent, String contentType, object headers, String callback)
        {
            WebRequest request = WebRequest.Create(url);

            request.Credentials = CredentialCache.DefaultCredentials;
            ((HttpWebRequest)request).UserAgent = userAgent;
            request.Method        = method;
            request.ContentLength = data.Length;
            request.ContentType   = contentType;
            Stream       stream = request.GetRequestStream();
            StreamWriter sw     = new StreamWriter(stream);

            sw.Write(data);
            request.ContentLength = stream.Length;

            IAsyncResult iar = request.BeginGetRequestStream(new AsyncCallback(this.lua_web_response), new RequestState()
            {
                Request = (HttpWebRequest)request, Callback = callback, URL = url
            });
        }