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; } }
/// <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; }
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)); }
public HttpMessage(IHttpHeaders headers, IHttpBody body) { Headers = headers; Body = body; }
public HttpMessage() { Headers = new HttpHeaders(); Body = new HttpBody(); }
/// <summary> /// /// </summary> /// <param name="body"></param> public void SetBody(IHttpBody body) { this.body = body; }