/// <summary>
        /// 异步将数据写入当前的请求流中
        /// </summary>
        /// <param name="asyncData"></param>
        public override void WriteToAsync(AsyncStreamProcessData asyncData)
        {
            base.WriteToAsync(asyncData);

            _buffer = new byte[Client.Setting.WriteBufferSize];
            BeginReadSourceStream();
        }
		/// <summary>
		/// 异步将数据写入当前的请求流中
		/// </summary>
		/// <param name="asyncData"></param>
		public override void WriteToAsync(AsyncStreamProcessData asyncData)
		{
			base.WriteToAsync(asyncData);

			var buffer = (Message.Encoding ?? Encoding.UTF8).GetBytes(Content ?? "");
			asyncData.AsyncStreamWrite(buffer, 0, buffer.Length, false, null);
		}
Esempio n. 3
0
        /// <summary>
        /// 处理响应
        /// </summary>
        /// <param name="async">上下文数据</param>
        internal void InternalProcessResponseAsync(AsyncStreamProcessData async)
        {
            if (async == null)
            {
                throw new ArgumentNullException(nameof(async), "async is null.");
            }

            _asyncData = async;
            ProcessResponseAsync();
        }
Esempio n. 4
0
        /// <summary>
        /// 异步将数据写入当前的请求流中
        /// </summary>
        /// <param name="asyncData"></param>
        public override void WriteToAsync(AsyncStreamProcessData asyncData)
        {
            base.WriteToAsync(asyncData);

            //异步写入的时候,如果没有文件,则一次性写入
            if (ContentType == ContentType.FormUrlEncoded)
            {
                asyncData.AsyncStreamWrite((ContentType == ContentType.FormUrlEncoded ? System.Text.Encoding.ASCII : Message.Encoding).GetBytes(ProcessedData.Where(s => s.Value != null).Select(s => s.Key + "=" + s.Value).Join("&")), false, null);
                return;
            }

            //否则先写入普通数据,再写入文件。
            byte[] textBuffer = null;
            using (var ms = new MemoryStream())
            {
                //写入普通区域
                foreach (var v in ProcessedData)
                {
                    if (v.Value == null)
                    {
                        continue;
                    }

                    var str = "--" + RequestBoundary + "\r\nContent-Disposition: form-data; name=\"" + v.Key + "\"\r\n\r\n";
                    ms.Write(Message.Encoding.GetBytes(str));
                    if (!v.Value.IsNullOrEmpty())
                    {
                        ms.Write(Message.Encoding.GetBytes(v.Value));
                    }
                    ms.Write(Message.Encoding.GetBytes("\r\n"));
                }
                ms.Close();
                textBuffer = ms.ToArray();
            }

            asyncData.AsyncStreamWrite(textBuffer, true, _ =>
            {
                _currentAsyncFileIndex = 0;

                if (AsyncData.Exception != null)
                {
                    return;
                }

                WriteFileAsync();
            });
        }
Esempio n. 5
0
 public virtual void WriteToAsync(AsyncStreamProcessData asyncData, Action callback)
 {
     _asyncData = asyncData;
     _callback  = callback;
     WriteHeaderAsync();
 }
Esempio n. 6
0
 /// <summary>
 /// 异步将数据写入当前的请求流中
 /// </summary>
 /// <param name="asyncData"></param>
 public virtual void WriteToAsync(AsyncStreamProcessData asyncData)
 {
     AsyncData = asyncData;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="asyncData"></param>
        public override void WriteToAsync(AsyncStreamProcessData asyncData)
        {
            base.WriteToAsync(asyncData);

            asyncData.AsyncStreamWrite(Buffer, 0, Buffer.Length, false, null);
        }