public EndGetRequestStream ( System asyncResult ) : System.IO.Stream | ||
asyncResult | System | |
return | System.IO.Stream |
private void OpenWriteAsyncCallback(IAsyncResult result) { Stream stream = null; Exception ex = null; bool cancel = false; InternalWebRequestStreamWrapper internal_stream; try { stream = request.EndGetRequestStream(result); internal_stream = (InternalWebRequestStreamWrapper)stream; internal_stream.WebClient = this; internal_stream.WebClientData = callback_data; } catch (WebException web) { cancel = (web.Status == WebExceptionStatus.RequestCanceled); ex = web; } catch (Exception e) { ex = e; } finally { callback_data.sync_context.Post(delegate(object sender) { OnOpenWriteCompleted(new OpenWriteCompletedEventArgs(stream, ex, cancel, callback_data.user_token)); }, null); } }
/// <include file='../_Doc/System.xml' path='doc/members/member[@name="M:System.Net.WebRequest.GetRequestStream"]/*' /> /// <param name="request">HTTP web request object on which to get request stream.</param> public static Stream GetRequestStream(this WebRequest request) { #if DOTNET return(request.GetRequestStream()); #else return(request.EndGetRequestStream(request.BeginGetRequestStream(null, null))); #endif }
public static Stream GetRequestStream(this WebRequest request) { AutoResetEvent autoResetEvent = new AutoResetEvent(false); IAsyncResult asyncResult = request.BeginGetRequestStream(r => autoResetEvent.Set(), null); // Wait until the call is finished autoResetEvent.WaitOne(); return(request.EndGetRequestStream(asyncResult)); }
private void OpenWriteAsyncCallback(IAsyncResult result) { Stream stream = null; Exception ex = null; bool cancel = false; try { stream = request.EndGetRequestStream(result); } catch (WebException web) { cancel = (web.Status == WebExceptionStatus.RequestCanceled); ex = web; } catch (Exception e) { ex = e; } finally { OnOpenWriteCompleted( new OpenWriteCompletedEventArgs(stream, ex, cancel, result.AsyncState)); } }
public void SetUp() { var uri = OAuthRequestHandler.OAuthRequestUri; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri(uri.AbsoluteUri, "null"); _request = factory.Create(uri); _stream = new MemoryStream(); _request.EndGetRequestStream(Arg.Any<IAsyncResult>()).Returns(c => _stream); _request.GetRequestStreamAsync().Returns(async c => (Stream)_stream); _handler = new OAuthRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "http://desktop/")); }
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); } }
private static void RequestAsync(WebRequest request, byte[] bodyBytes, Action<TrackResult> callback) { request.BeginGetRequestStream((r1) => { try { var stream = request.EndGetRequestStream(r1); stream.BeginWrite(bodyBytes, 0, bodyBytes.Length, (r2) => { try { stream.EndWrite(r2); stream.Dispose(); request.BeginGetResponse((r3) => { try { using (var response = request.EndGetResponse(r3)) { using (var reader = new StreamReader(response.GetResponseStream())) { if (callback != null) callback(new TrackResult(reader.ReadToEnd())); } } } catch (Exception ex) { HandleError(callback, ex); } }, null); } catch (Exception ex) { HandleError(callback, ex); } }, null); } catch(Exception ex) { HandleError(callback, ex); } }, null); }
public Task <byte[]> UploadValuesTaskAsync(string address, NameValueCollection names) { return(Task <byte[]> .Factory.StartNew(() => { WebRequest request = this.GetWebRequest(new Uri(address)); request.ContentType = "text/plain; charset=utf-8"; request.Method = "POST"; byte[] data = null; request.BeginGetRequestStream(new AsyncCallback((IAsyncResult res) => { using (Stream postStream = request.EndGetRequestStream(res)) { StringBuilder postParamBuilder = new StringBuilder(); foreach (var key in names.Keys) { postParamBuilder.Append(String.Format("{0}={1}&", key, names[key])); } byte[] byteArray = Encoding.UTF8.GetBytes(postParamBuilder.ToString()); postStream.Write(byteArray, 0, byteArray.Length); postStream.Close(); request.BeginGetResponse(new AsyncCallback((IAsyncResult nres) => { using (Stream respStream = request.EndGetResponse(nres).GetResponseStream()) { data = new byte[respStream.Length]; respStream.Write(data, 0, data.Length); } }), null); } }), null); while (data == null) { } return data; })); }
public Task <byte[]> DownloadDataTaskAsync(string address) { return(Task <byte[]> .Factory.StartNew(() => { WebRequest request = this.GetWebRequest(new Uri(address)); byte[] data = null; AsyncCallback callback = new AsyncCallback((IAsyncResult res) => { using (Stream str = request.EndGetRequestStream(res)) { data = new byte[str.Length]; str.Write(data, 0, data.Length); } }); request.BeginGetRequestStream(callback, null); while (data == null) { } return data; })); }
private static void SetPostData(object postdata, WebRequest request) { using (System.Threading.ManualResetEvent man = new System.Threading.ManualResetEvent(false)) { request.Method = "POST"; System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(postdata.GetType()); using (var mem = new System.IO.MemoryStream()) { serializer.WriteObject(mem, postdata); mem.Position = 0; request.ContentLength = mem.Length; request.BeginGetRequestStream((s) => { using (var postStream = request.EndGetRequestStream(s)) { mem.CopyTo(postStream); } man.Set(); }, null); man.WaitOne(); } } }
private void OnGetRequestStreamCompleted(IAsyncResult ar, WebRequest request, byte[] data) { Debug.Assert(ar != null); Debug.Assert(request != null); Debug.Assert(data != null); Debug.Assert(data.Length > 0); try { using (var output = request.EndGetRequestStream(ar)) output.Write(data, 0, data.Length); request.BeginGetResponse(OnGetResponseCompleted, request); } catch (Exception e) { OnWebPostError(request, e); } }
public override System.IO.Stream EndGetRequestStream(IAsyncResult asyncResult) { return(_internalWebRequest.EndGetRequestStream(asyncResult)); }
private void OnGetRequestStreamCompleted(IAsyncResult ar, WebRequest request, byte[] data) { try { using (var output = request.EndGetRequestStream(ar)) { output.Write(data, 0, data.Length); } request.BeginGetResponse(OnGetResponseCompleted, request); } catch (Exception e) { OnWebPostError(request, e); } }
private ServiceResponse SendDataAsyncTPL(WebRequest request, byte[] data) { try { Task.Factory.FromAsync( request.BeginGetRequestStream, asyncResult => request.EndGetRequestStream(asyncResult), null) .ContinueWith((t) => { var stream = (Stream)t.Result; stream.Write(data, 0, data.Length); }) .Wait(); } catch (AggregateException ae) { throw MappedAggregateException(ae); } return SendRequestAsyncTPL(request); }
void BeginProcessRequest (HttpChannelRequestAsyncResult result) { Message message = result.Message; TimeSpan timeout = result.Timeout; // FIXME: is distination really like this? Uri destination = message.Headers.To; if (destination == null) { if (source.Transport.ManualAddressing) throw new InvalidOperationException ("When manual addressing is enabled on the transport, every request messages must be set its destination address."); else destination = Via ?? RemoteAddress.Uri; } web_request = HttpWebRequest.Create (destination); web_request.Method = "POST"; web_request.ContentType = Encoder.ContentType; #if NET_2_1 var cmgr = source.GetProperty<IHttpCookieContainerManager> (); if (cmgr != null) ((HttpWebRequest) web_request).CookieContainer = cmgr.CookieContainer; #endif #if !MOONLIGHT // until we support NetworkCredential like SL4 will do. // client authentication (while SL3 has NetworkCredential class, it is not implemented yet. So, it is non-SL only.) var httpbe = (HttpTransportBindingElement) source.Transport; string authType = null; switch (httpbe.AuthenticationScheme) { // AuthenticationSchemes.Anonymous is the default, ignored. case AuthenticationSchemes.Basic: authType = "Basic"; break; case AuthenticationSchemes.Digest: authType = "Digest"; break; case AuthenticationSchemes.Ntlm: authType = "Ntlm"; break; case AuthenticationSchemes.Negotiate: authType = "Negotiate"; break; } if (authType != null) { var cred = source.ClientCredentials; string user = cred != null ? cred.UserName.UserName : null; string pwd = cred != null ? cred.UserName.Password : null; if (String.IsNullOrEmpty (user)) throw new InvalidOperationException (String.Format ("Use ClientCredentials to specify a user name for required HTTP {0} authentication.", authType)); var nc = new NetworkCredential (user, pwd); web_request.Credentials = nc; // FIXME: it is said required in SL4, but it blocks full WCF. //web_request.UseDefaultCredentials = false; } #endif #if !NET_2_1 // FIXME: implement this to not depend on Timeout property web_request.Timeout = (int) timeout.TotalMilliseconds; #endif // There is no SOAP Action/To header when AddressingVersion is None. if (message.Version.Envelope.Equals (EnvelopeVersion.Soap11) || message.Version.Addressing.Equals (AddressingVersion.None)) { if (message.Headers.Action != null) { web_request.Headers ["SOAPAction"] = String.Concat ("\"", message.Headers.Action, "\""); message.Headers.RemoveAll ("Action", message.Version.Addressing.Namespace); } } // apply HttpRequestMessageProperty if exists. bool suppressEntityBody = false; #if !NET_2_1 string pname = HttpRequestMessageProperty.Name; if (message.Properties.ContainsKey (pname)) { HttpRequestMessageProperty hp = (HttpRequestMessageProperty) message.Properties [pname]; web_request.Headers.Clear (); web_request.Headers.Add (hp.Headers); web_request.Method = hp.Method; // FIXME: do we have to handle hp.QueryString ? if (hp.SuppressEntityBody) suppressEntityBody = true; } #endif if (!suppressEntityBody && String.Compare (web_request.Method, "GET", StringComparison.OrdinalIgnoreCase) != 0) { MemoryStream buffer = new MemoryStream (); Encoder.WriteMessage (message, buffer); if (buffer.Length > int.MaxValue) throw new InvalidOperationException ("The argument message is too large."); #if !NET_2_1 web_request.ContentLength = (int) buffer.Length; #endif web_request.BeginGetRequestStream (delegate (IAsyncResult r) { try { result.CompletedSynchronously &= r.CompletedSynchronously; using (Stream s = web_request.EndGetRequestStream (r)) s.Write (buffer.GetBuffer (), 0, (int) buffer.Length); web_request.BeginGetResponse (GotResponse, result); } catch (Exception ex) { result.Complete (ex); } }, null); } else { web_request.BeginGetResponse (GotResponse, result); } }
private Stream GetRequestStream(WebRequest request) { AutoResetEvent autoResetEvent = new AutoResetEvent(false); IAsyncResult asyncResult = request.BeginGetRequestStream(r => autoResetEvent.Set(), null); autoResetEvent.WaitOne(); return request.EndGetRequestStream(asyncResult); }
private static void PostRequest(WebRequest request, IAsyncResult ar, byte[] data) { using (var output = request.EndGetRequestStream(ar)) { output.Write(data, 0, data.Length); } request.BeginGetResponse(ErrorReportingAsyncCallback(rar => request.EndGetResponse(rar).Close()), null); }
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; }
private void _IrosHPost(IntPtr handle, ref IrosHPostData data) { string url = Marshal.PtrToStringAnsi(data.url); string ctype = Marshal.PtrToStringAnsi(data.contentType); System.Net.WebRequest req = System.Net.WebRequest.Create(url); req.ContentType = ctype; //req.Method = data.len > 0 ? "POST" : "GET"; req.Method = "POST"; TraceLogger(String.Format("{3}ing {2} bytes to {0} handle {1}", url, handle, data.len, req.Method)); byte[] buffer = new byte[data.len]; Marshal.Copy(data.data, buffer, 0, buffer.Length); WebTask t = new WebTask() { Req = req, Handle = handle, writeBack = data.writeBack }; _http[handle] = t; AsyncCallback doResponse = ar2 => { try { var resp = req.EndGetResponse(ar2); var rs = req.GetResponse().GetResponseStream(); t.Async = rs.BeginRead(t.ReceiveBuffer, 0, t.ReceiveBuffer.Length, AsyncReceive, t); } catch (WebException e) { ErrorLogger(String.Format("Error receiving from {0}: {1}", handle, e.ToString())); t.ReceiveDone = true; if (e.Response != null) { t.Status = (int)((HttpWebResponse)e.Response).StatusCode; } else { t.Status = 500; } } catch (Exception e) { ErrorLogger(String.Format("Error receiving from {0}: {1}", handle, e.ToString())); t.ReceiveDone = true; t.Status = 500; } }; t.ReceiveBuffer = new byte[0x10000]; if (buffer.Length > 0) { t.Async = req.BeginGetRequestStream(ar => { var s = req.EndGetRequestStream(ar); using (s) { s.Write(buffer, 0, buffer.Length); } t.Completed = t.Size = buffer.Length; TraceLogger(String.Format("Beginning GetResponse for {0}", handle)); t.Async = req.BeginGetResponse(doResponse, t); }, t); } else { TraceLogger(String.Format("Beginning GetResponse [no request data] for {0}", handle)); t.Async = req.BeginGetResponse(doResponse, t); } }
private static void CreateMultiPartRequest(WebRequest request, IAsyncResult asyncResult, List<MimePart> parts) { string boundary = DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; using (Stream postStream = request.EndGetRequestStream(asyncResult)) { foreach (MimePart part in parts) { if (part.IsFile) { StringBuilder sbHeader = new StringBuilder(); sbHeader.AppendFormat("--{0}", boundary); sbHeader.Append("\r\n"); sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\";", part.Name, part.Filename); sbHeader.Append("\r\n"); sbHeader.AppendFormat("Content-Type: {0}", part.ContentType); sbHeader.Append("\r\n"); sbHeader.Append("\r\n"); byte[] header = Encoding.UTF8.GetBytes(sbHeader.ToString()); postStream.Write(header, 0, header.Length); part.Stream.CopyTo(postStream); byte[] crlf = Encoding.UTF8.GetBytes("\r\n"); postStream.Write(crlf, 0, crlf.Length); } else { StringBuilder sbHeader = new StringBuilder(); sbHeader.AppendFormat("--{0}", boundary); sbHeader.Append("\r\n"); sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\";", part.Name); sbHeader.Append("\r\n"); sbHeader.AppendFormat("Content-Type: {0}; charset=UTF-8", part.ContentType); sbHeader.Append("\r\n"); sbHeader.Append("\r\n"); sbHeader.Append(part.Value); sbHeader.Append("\r\n"); byte[] header = Encoding.UTF8.GetBytes(sbHeader.ToString()); postStream.Write(header, 0, header.Length); } } byte[] footer = Encoding.UTF8.GetBytes("--" + boundary + "--\r\n"); postStream.Write(footer, 0, footer.Length); } }
private static void CreateSinglePartRequest(WebRequest request, IAsyncResult asyncResult, MimePart part) { // End the operation using (Stream postStream = request.EndGetRequestStream(asyncResult)) { if (!part.IsFile) { request.ContentType = string.Format("{0}; charset=UTF-8", part.ContentType); // Write text value into the HTTP request byte[] byteArray = Encoding.UTF8.GetBytes(part.Value); postStream.Write(byteArray, 0, byteArray.Length); } else { request.ContentType = part.ContentType; // Copy binary data to HTTP request part.Stream.CopyTo(postStream); } } }