标签: chunked-encoding

支持分块编码的Python HTTP服务器?

我正在寻找一个支持良好的多线程Python HTTP服务器,它支持分块编码回复.(即响应中的"转移编码:分块").为此目的,最好的HTTP服务器基础是什么?

python http chunked-encoding

6
推荐指数
1
解决办法
4868
查看次数

Tomcat gzip虽然chunked问题

我在使用我的一个数据源服务时遇到了一些问题.正如它在HTTP响应头中所说,它在Apache-Coyote/1.1上运行.服务器使用Transfer-Encoding给出响应:chunked,这里是示例响应:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Content-Encoding: gzip
Date: Tue, 30 Mar 2010 06:13:52 GMT
Run Code Online (Sandbox Code Playgroud)

问题是当我请求服务器发送gzipped请求时,它经常发送不完整的响应.我收到回应,看到最后一块收到了,但是在解开后我看到回复是偏的.我从未在请求​​标头中关闭gzip这样的行为.

所以我的问题是:它是常见的tomcat问题吗?也许其中一个mod正在进行压缩?或者也许它可能是某种代理问题?我不知道tomcat的版本或者他们使用的是什么gzip mod,但随便问一下,我会试着询问我的服务提供商.

谢谢.

tomcat gzip transfer-encoding chunked-encoding

6
推荐指数
1
解决办法
4800
查看次数

在Java中分块的http解码?

我正在解码http数据包.我遇到了一个问题,就是问题.当我得到一个http数据包时,它有一个标题和正文.当transefer编码被分块时我不知道该怎么办?

是否有一个有用的API或类来解除JAVA中的数据?

如果有人,经验丰富的http解码,请告诉我如何做到这一点?

java http chunked-encoding

6
推荐指数
1
解决办法
2万
查看次数

如何从java servlet中的chunked响应中发送Http预告片/页脚?

基本上我的响应标头包含

编码传输分块=,

预告片= [我要发送的一些预告片说例如"SomeTrailer"]

一旦我完成了将数据写入Servlet输出流,我正在编写预告片"SomeTrailer:[value]",但这并没有被httpclient正确解析.httpclient将整个输入流(包括预告片)视为单个块.我已经尝试在将数据写入输出流后在响应头中编写预告片,但没有成功.

请帮忙

我没有找到任何好的消息来源.

java servlets httpclient chunked-encoding

6
推荐指数
1
解决办法
3943
查看次数

在分块传输编码中发送响应并指示在已经发送一些数据之后发生的错误

我以分块传输编码格式向客户端发送大量数据.

我应该如何处理出现的任何错误中途响应的写作过程中?

我想知道是否有任何HTTP规范建议的做法,以便客户知道确实响应不是一个成功的但服务器遇到了一些问题.

http chunked-encoding http-chunked

6
推荐指数
1
解决办法
2292
查看次数

避免HTTP/1.1响应的分块编码

我想避免从(符合)HTTP服务器获得分块编码的HTTP服务器响应.我正在阅读RFC 2616部分" 14.39 TE ",在我看来,我可以通过指定来避免它TE: chunked;q=0.如果我无法避免分块编码,我想避免拖车.会指定TE: trailers;q=0工作吗?

http chunked-encoding http-headers

6
推荐指数
1
解决办法
1万
查看次数

如何连续通过管道进行卷曲和分块发布?

我知道curl可以将数据发布到URL:

$ curl -X POST http://httpbin.org/post -d "hello"
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "hello": ""
  }, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "5", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.50.1"
  }, 
  "json": null, 
  "origin": "64.238.132.14", 
  "url": "http://httpbin.org/post"
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过管道传递curl来实现同样的事情:

$ echo "hello" | curl -X POST http://httpbin.org/post -d @-
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "hello": ""
  }, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "5", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.50.1"
  }, 
  "json": null, 
  "origin": "64.238.132.14", …
Run Code Online (Sandbox Code Playgroud)

post curl http chunked-encoding

6
推荐指数
0
解决办法
4004
查看次数

对服务器服务器的分块请求导致挂起状态

我有一个Undertow服务器,我正在运行默认值.我试图发送一个分块请求,当服务器接收块时,输入流服务器端永远不会达到-1状态并挂起.

我已经使用了Undertow服务器的默认值(我曾尝试增加线程数但仍然没有运气).

Undertow server = Undertow.builder()
            .addHttpListener(8080, "localhost")
            .setHandler(new HttpHandler() {
                @Override
                public void handleRequest(final HttpServerExchange exchange) throws Exception {
                    exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
                    exchange.getResponseSender().send("Hello World");
                }
            })
            .setHandler(Handlers.routing().post("/xml", blockingHandler))
            .build();
    server.start();
Run Code Online (Sandbox Code Playgroud)

起初我试图使用普通的httpHandler,但是却引发了错误.

java.lang.IllegalStateException: UT000035: Cannot get stream as startBlocking has not been invoked
Run Code Online (Sandbox Code Playgroud)

经过一些研究后,我使用了Blockoverflow上的建议,然后使用了BlockingHandler.我不再收到上面的错误,但现在处理程序挂起.

这是处理程序的代码(为了清楚起见,我删除了异常处理):

HttpHandler httpHandler = new HttpHandler() {
        @Override
        public void handleRequest(HttpServerExchange exchange) throws Exception {

            StringBuilder builder = new StringBuilder( );

            try(InputStream inputStream = exchange.getInputStream()){

                int line;
                while( ( line = inputStream.read() ) != -1 ) { …
Run Code Online (Sandbox Code Playgroud)

java http chunked-encoding wildfly undertow

6
推荐指数
0
解决办法
887
查看次数

Python请求 - ChunkedEncodingError(e) - requests.iter_lines

我正在ChunkedEncodingError(e)使用Python请求.我正在使用以下内容来删除JSON:

r = requests.get(url, headers=auth, stream=True)
Run Code Online (Sandbox Code Playgroud)

并使用回车作为分隔符迭代每一行,这就是此API区分不同JSON事件的方式.

for d in r.iter_lines(delimiter="\n"):
    d += "\n"
    sock.send(d)
Run Code Online (Sandbox Code Playgroud)

我正在对回车进行分界,然后将其添加回作为端点我正在推动日志实际上期望在每个事件结束时回车.这似乎适用于大约100k日志文件.当我尝试拨打更大的电话时,我会抛出以下内容:

for d in r.iter_lines(delimiter="\n"):
logs_1           |   File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 783, in iter_lines
logs_1           |     for chunk in self.iter_content(chunk_size=chunk_size, decode_unicode=decode_unicode):
logs_1           |   File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 742, in generate
logs_1           |     raise ChunkedEncodingError(e)
logs_1           | requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
Run Code Online (Sandbox Code Playgroud)

更新:我发现API NoneType也在某个时刻发回.那么如何在响应中的某处解释这个空字节而不会破坏一切?每个单独的事件都以a结束\n,我需要能够单独检查每个事件.我应该把内容分块而不是iter_lines?然后确保NoneType块中没有?这样我就不会试图iter_lines超过它NoneType并且它会爆炸?

python chunked-encoding http-chunked python-requests

6
推荐指数
1
解决办法
1万
查看次数

Ktor HttpClient 对分块传输编码的支持

我正在使用 Ktor HttpClient(CIO) 向 HTTP API 发出请求,该 API 的响应使用分块传输编码。

在调用使用分块传输编码的 API 时,是否可以使用 Ktor HttpClient(CIO) 来访问 HttpResponse 中的各个 Http 块?

httpclient chunked-encoding kotlin ktor

6
推荐指数
1
解决办法
674
查看次数