public async static Task <CallRet> MultiPost(string url, NameValueCollection formData, Stream inputStream, IWebProxy proxy = null) { string boundary = RandomBoundary(); HttpClient client = new HttpClient(); HttpMultipartContent content = new HttpMultipartContent(); content.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary); //WebRequest webRequest = WebRequest.Create(url); //if (proxy != null) //{ // webRequest.Proxy = proxy; //} //webRequest.Method = "POST"; //webRequest.ContentType = "multipart/form-data; boundary=" + boundary; Stream postDataStream = GetPostStream(inputStream, formData["key"], formData, boundary); content.Add(new HttpStreamContent(postDataStream.AsInputStream())); //webRequest.ContentLength = postDataStream.Length; //Stream reqStream = webRequest.GetRequestStream(); //postDataStream.Position = 0; //byte[] buffer = new byte[1024]; //int bytesRead = 0; //while ((bytesRead = postDataStream.Read(buffer, 0, buffer.Length)) != 0) //{ // reqStream.Write(buffer, 0, bytesRead); //} //postDataStream.Dispose(); //reqStream.Dispose(); try { var resp = await client.PostAsync(new Uri(url), content); return(await RPC.Client.HandleResult(resp)); } catch (Exception e) { Debug.WriteLine(e.ToString()); return(new CallRet(Windows.Web.Http.HttpStatusCode.BadRequest, e)); } }
public virtual async Task <HttpRequestMessage> SendRequest(Stream stream) { var content = new HttpMultipartContent(); content.Headers.ContentType = HttpMediaTypeHeaderValue.Parse(String.Format(CultureInfo.InvariantCulture, @"multipart/related; boundary=""{0}""; type = ""application/atom+xml""", _boundary)); content.Add(new HttpStreamContent(stream.AsInputStream())); _request.Content = content; return(_request); // _request.ContentLength = _requestBodyTop.Length + stream.Length + _requestBodyBottom.Length; //_request.AllowWriteStreamBuffering = false; //_requestStream = await _request.GetRequestStreamAsync(); //_requestStream.Write(_requestBodyTop.ToArray(), 0, (int)_requestBodyTop.Length); //await StreamHelper.TransferAsync(stream, _requestStream, 8192, true); //_requestStream.Write(_requestBodyBottom.ToArray(), 0, (int)_requestBodyBottom.Length); //await _requestStream.FlushAsync(); //return _request; }
public async static Task<CallRet> MultiPost(string url, NameValueCollection formData, Stream inputStream, IWebProxy proxy = null) { string boundary = RandomBoundary(); HttpClient client = new HttpClient(); HttpMultipartContent content = new HttpMultipartContent(); content.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary); //WebRequest webRequest = WebRequest.Create(url); //if (proxy != null) //{ // webRequest.Proxy = proxy; //} //webRequest.Method = "POST"; //webRequest.ContentType = "multipart/form-data; boundary=" + boundary; Stream postDataStream = GetPostStream(inputStream, formData["key"], formData, boundary); content.Add(new HttpStreamContent(postDataStream.AsInputStream())); //webRequest.ContentLength = postDataStream.Length; //Stream reqStream = webRequest.GetRequestStream(); //postDataStream.Position = 0; //byte[] buffer = new byte[1024]; //int bytesRead = 0; //while ((bytesRead = postDataStream.Read(buffer, 0, buffer.Length)) != 0) //{ // reqStream.Write(buffer, 0, bytesRead); //} //postDataStream.Dispose(); //reqStream.Dispose(); try { var resp = await client.PostAsync(new Uri(url), content); return await RPC.Client.HandleResult(resp); } catch (Exception e) { Debug.WriteLine(e.ToString()); return new CallRet(Windows.Web.Http.HttpStatusCode.BadRequest, e); } }