Exemple #1
0
        public HttpResponse(object body, HttpStatus?status = null, HttpHeaders headers = null)
        {
            Status  = status ?? HttpStatus.Ok;
            Headers = headers ?? new HttpHeaders();
            switch (body)
            {
            case IHttpBody httpBody:
                Body = httpBody;
                break;

            case byte[] bytes:
                Body = new MemoryHttpBody(bytes);
                break;

            case Stream stream:
                Body = new StreamHttpBody(stream);
                break;

            case FileInfo fileInfo:
                Body = new FileHttpBody(fileInfo);
                break;

            default:
                Body = new MemoryHttpBody(body.ToString());
                break;
            }
        }
Exemple #2
0
        /// <summary>
        /// Gets the request string body.
        /// </summary>
        /// <param name="body">The body.</param>
        /// <returns></returns>
        public static string GetRequestStringBody(IHttpBody body)
        {
            string result = string.Empty;

            if (body != null)
            {
                StringHttpBody b = (StringHttpBody)body;

                result = b.BodyString;
            }

            return(result);
        }
 private WebTestRequest CreateRequest(string url, string id, string method, int expectedStatus, IHttpBody body = null)
 {
     var table = url.Contains("v1") ? "v1crud" : "crud";
     var request = new WebTestRequest(url + "tables/" + table + "/" + id)
     {
         Timeout = 5,
         Method = method,
         Encoding = Encoding.GetEncoding("utf-8"),
         ExpectedHttpStatusCode = expectedStatus,
         Body = body
     };
     request.Headers.Add("x-zumo-application", "EHRkCHqMqEhibaRxeSCyzXcmEUVThd11");
     return request;
 }
Exemple #4
0
        void ParseHeader <TState>(IPipeline pipeline, char[] buffer, int length, object[] args)
        {
            if (length == 0)  // 仅解析到 '\r',说明当前位置为Header 与 Body 间的内容分隔符“空行”
            {
                foreach (var header in headers)
                {
                    if (header.Name.Equals("content-length", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ContentLength = Convert.ToInt32(header.Value);
                    }
                    else if (header.Name.Equals("content-type", StringComparison.CurrentCultureIgnoreCase))
                    {
                        Mulitpart = header.Value.IndexOf("multipart/", StringComparison.CurrentCultureIgnoreCase) >= 0;
                    }
                }

                if (ContentLength > 0)
                {
                    body = new DataProviderBody(ContentLength, dataProvider);
                }

                ((IOCallback <TState>)args[0])(pipeline, this, (TState)args[1]); // 信息头解析完成return回调
                return;
            }
            // 解析  HeaderName: HeaderValue 格式的 Header 头
            for (int i = 0; i < length; i++)
            {
                var chr = buffer[i];
                if (chr == ':')
                {
                    var name  = new string(buffer, 0, i);
                    var value = i == length - 1 /*:是末尾结束符*/ ? null : new string(buffer, i + 1, length - i - 1);
                    Headers.Add(new HttpHeader(name, value));
                    if (Headers.Count > 100) // 太多 Header 头
                    {
                        pipeline.Interrupte();
                        return;
                    }
                    // 继续读取更多 Header
                    dataProvider.ReadLine(ParseHeader <TState>, args);
                    return;
                }
            }

            throw new InvalidOperationException("Invalid Header :" + new string(buffer, 0, length));
        }
Exemple #5
0
 public HttpMessage(IHttpHeaders headers, IHttpBody body)
 {
     Headers = headers;
     Body    = body;
 }
Exemple #6
0
 public HttpMessage()
 {
     Headers = new HttpHeaders();
     Body    = new HttpBody();
 }
Exemple #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="body"></param>
 public void SetBody(IHttpBody body)
 {
     this.body = body;
 }