public void ReceiveResponseEntity(HttpResponse response) { if (!this.IsConnected()) { throw new HttpNetworkException("Socket is closed or not ready"); } string chunkedHeader = EntityUtils.GetTransferEncoding(response.Headers); if (chunkedHeader != null && chunkedHeader.ToLower().Equals(HTTP.CHUNK_CODING)) { List <byte> byteBuffer = new List <byte>(); BasicHttpEntity httpEntity = new BasicHttpEntity(); httpEntity.ContentLength = 0; httpEntity.ContentType = EntityUtils.GetContentType(response.Headers); response.Entity = httpEntity; int chunkSize = EntityUtils.ConvertHexToInt(ReceiveLine()); while (chunkSize > 0) { // for each chunk... byteBuffer.AddRange(ReceiveBytes(chunkSize)); httpEntity.ContentLength += chunkSize; string test = ReceiveLine(); chunkSize = EntityUtils.ConvertHexToInt(ReceiveLine()); } httpEntity.Content = byteBuffer.ToArray(); } else { // TODO: support "Transfer-Encoding: chunked" int length = EntityUtils.GetContentLength(response.Headers); if (length > 0) { BasicHttpEntity httpEntity = new BasicHttpEntity(); httpEntity.ContentLength = length; httpEntity.Content = ReceiveBytes(length).ToArray(); httpEntity.ContentType = EntityUtils.GetContentType(response.Headers); response.Entity = httpEntity; } else { byte[] content = ReceiveToEnd(); length = content.Length; if (length > 0) { BasicHttpEntity httpEntity = new BasicHttpEntity(); httpEntity.ContentLength = length; httpEntity.Content = content; httpEntity.ContentType = EntityUtils.GetContentType(response.Headers); response.Entity = httpEntity; } } } return; }
/// <exception cref="Org.Apache.Http.HttpException"></exception> protected internal virtual HttpEntity PrepareInput(HttpMessage message) { BasicHttpEntity entity = new BasicHttpEntity(); long len = this.incomingContentStrategy.DetermineLength(message); InputStream instream = CreateInputStream(len, this.inbuffer); if (len == ContentLengthStrategy.Chunked) { entity.SetChunked(true); entity.SetContentLength(-1); entity.SetContent(instream); } else { if (len == ContentLengthStrategy.Identity) { entity.SetChunked(false); entity.SetContentLength(-1); entity.SetContent(instream); } else { entity.SetChunked(false); entity.SetContentLength(len); entity.SetContent(instream); } } Header contentTypeHeader = message.GetFirstHeader(HTTP.ContentType); if (contentTypeHeader != null) { entity.SetContentType(contentTypeHeader); } Header contentEncodingHeader = message.GetFirstHeader(HTTP.ContentEncoding); if (contentEncodingHeader != null) { entity.SetContentEncoding(contentEncodingHeader); } return(entity); }
public override void ReceiveResponseEntity(HttpResponse response) { if (!this.IsConnected()) { throw new HttpNetworkException("Tls client is closed or not ready (ReceiveResponseEntity)"); } string chunkedHeader = EntityUtils.GetTransferEncoding(response.Headers); if (chunkedHeader != null && chunkedHeader.ToLower().Equals(HTTP.CHUNK_CODING)) { List<byte> byteBuffer = new List<byte>(); BasicHttpEntity httpEntity = new BasicHttpEntity(); httpEntity.ContentLength = 0; httpEntity.ContentType = EntityUtils.GetContentType(response.Headers); response.Entity = httpEntity; int chunkSize = EntityUtils.ConvertHexToInt(ReceiveLine()); while (chunkSize > 0) { // for each chunk... byteBuffer.AddRange(ReceiveBytes(chunkSize)); httpEntity.ContentLength += chunkSize; string test = ReceiveLine(); chunkSize = EntityUtils.ConvertHexToInt(ReceiveLine()); } httpEntity.Content = byteBuffer.ToArray(); } else { // TODO: support "Transfer-Encoding: chunked" int length = EntityUtils.GetContentLength(response.Headers); if (length > 0) { BasicHttpEntity httpEntity = new BasicHttpEntity(); httpEntity.ContentLength = length; httpEntity.Content = ReceiveBytes(length).ToArray(); httpEntity.ContentType = EntityUtils.GetContentType(response.Headers); response.Entity = httpEntity; } } return; }
/// <summary> /// Creates new instance of /// <see cref="Apache.Http.HttpEntity">Apache.Http.HttpEntity</see> /// based on the current state. /// </summary> public virtual HttpEntity Build() { AbstractHttpEntity e; if (this.text != null) { e = new StringEntity(this.text, GetContentOrDefault(ContentType.DefaultText)); } else { if (this.binary != null) { e = new ByteArrayEntity(this.binary, GetContentOrDefault(ContentType.DefaultBinary )); } else { if (this.stream != null) { e = new InputStreamEntity(this.stream, 1, GetContentOrDefault(ContentType.DefaultBinary )); } else { if (this.parameters != null) { e = new UrlEncodedFormEntity(this.parameters, this.contentType != null ? this.contentType .GetCharset() : null); } else { if (this.serializable != null) { e = new SerializableEntity(this.serializable); e.SetContentType(ContentType.DefaultBinary.ToString()); } else { if (this.file != null) { e = new FileEntity(this.file, GetContentOrDefault(ContentType.DefaultBinary)); } else { e = new BasicHttpEntity(); } } } } } } if (e.GetContentType() != null && this.contentType != null) { e.SetContentType(this.contentType.ToString()); } e.SetContentEncoding(this.contentEncoding); e.SetChunked(this.chunked); if (this.gzipCompress) { return(new GzipCompressingEntity(e)); } return(e); }