使用 HttpClient 时,为什么服务器响应中省略了 Content-Length 标头?

2024-05-18

我正在使用这个问题的源代码如何异步执行httprequest并显示下载响应的进度 https://stackoverflow.com/questions/9594318/how-to-asynchronous-perform-a-httprequest-and-show-the-progress-of-downloading-t为了获取网页的 html 源并显示进度条,其中包含到目前为止下载的数据以及页面的总大小。

该特定代码实际上在 ICS 4.0.3 上不起作用,因为 clHeaders[0] 不指向任何内容,并且在索引 0 处引发名为 ArrayIndexOutOfBounds 的异常,因为服务器响应中省略了 Content-Length 标头。我尝试使用 getContentLength 以防出现问题 - 它返回负值 -1 然后我迭代所有标头,但 Content-Length 不存在。删除这些位后,代码工作正常,并获取网页,写入文件,并显示正在下载的大小,但显然不是最终大小,直到我实际下载全部内容。

对于原因我只有三个想法:

  1. 我没有发送内容长度标头,因此我也没有收到内容长度标头 - 但这听起来不对。另外,我不知道 HttpClient 是否没有在后台发送。
  2. 我在另一个问题中读到,如果服务器的响应是流式或分块式的,那么 getContentLength 可以返回 -1。
  3. 压缩包?但我不知道如何禁用它或者它是否首先启用

如果您认为是服务器损坏了,我尝试了包括 Google 在内的许多网站,但仍然没有任何 Content-Length 标头。


Content-Length 标头是可选的,它主要仅对 HEAD 请求或非常大的数据有用,如果内容太大,客户端可能会决定中止请求。所以是的,内容长度并不总是存在。除此之外,您通常应该通过读取数据来获取内容长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HttpClient 时,为什么服务器响应中省略了 Content-Length 标头? 的相关文章

随机推荐

  • 什么是 Microsoft.Bcl.Async?

    什么是 Microsoft Bcl Async 它的用途是什么 我已经读过包装页面 https www nuget org packages Microsoft Bcl Async that 此包使 Visual Studio 2012 项
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • 如何使用 ASP.NET Web API 生成 ATOM 和 RSS2 提要?

    需要采取哪些步骤来调整 ASP NET Web API 的默认 XML 输出以生成 ATOM 和 RSS2 提要 您将需要实现自定义 MediaTypeFormatter 您可能想查看 Filip 的博客文章用于 ASP NET WebAP
  • Bootstrap 中的旋转字形 / Font Awesome

    我试图让引导站点中的字形在悬停时旋转 除了更改颜色之外 这是我的尝试 http jsfiddle net young greedo17 88g5P http jsfiddle net young greedo17 88g5P 使用此代码 d
  • 获取 Parse Analytics 自定义仪表板

    是否可以使用 Javascript 或 REST API 从 Parse 获取应用程序分析 我想在我自己的仪表板中显示下载数量和自定义事件 不可以 您只能通过 REST API 推送 https parse com docs rest ht
  • 使用绝对定位时文本被破坏

    我有一个小挑战 我在 Stack Overflow 上没有找到任何解决方案 这就是我得到的 这就是我想要的 为了产生这个标题效果 我使用绝对位置 我什至不知道我的标题的宽度和高度 因此 使用此解决方案时 大文本会中断 My HTML div
  • Boost.Asio 段错误,不知道为什么

    这是我的 Boost Asio 项目基于示例的 SSCCE 我花了大约一个小时才找到这个错误 include
  • 在空手道 DSL 功能文件中使用模拟并独立运行

    我有 REST 服务 用不同于 Java 的语言编写 它与其他 REST 服务几乎没有依赖关系 例如正在开发和测试的服务是A 其他服务分别是B and C 我想运行系统测试A 一些测试需要B or and C在线并执行查询A 我编写了 b
  • 将 Array Obj-c 的内容转储到控制台

    我寻找了如何转储和数组到我主要找到的控制台 for id name in arrayStuff NSLog Array contents d name 我尝试了不同的格式化程序 d g 等 它们确实打印了不同的内容 但不是我 99 确信被输
  • Python LocationValueError:未指定主机

    自从上次更新我的 Windows 以来 我的 python 无法连接到互联网 当我 pip 某些东西时 错误就像 if host startswith AttributeError NoneType object has no attrib
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • Android 应用程序在启动时打开应用程序信息屏幕,而不是启动主 Activity

    我不确定这是否是一个问题 但这是我第一次遇到这个问题 我正在开发一个应用程序 当我在进行一些编码后断开应用程序与 Android Studio 和 PC 的连接时 如果我尝试在手机上打开应用程序 它会启动app info屏幕 我们看到强制停
  • 在 monad 转换器类型类中使用列表 monad?

    我的目标是创建一个在 ReaderT WriterT 堆栈或 RWS 堆栈中使用列表 monad 的函数 更一般地说 如何在 mtl 类型类 例如 MonadReader MonadWriter 中使用列表 monad 我为什么要尝试这样做
  • Ruby 是否有一个 Expect 等效 gem?

    Ruby 是否有一个 Expect 等效 gem 我尝试在 code google 和 ruby gems org 上搜索 但遗憾的是它没有出现 FYI Expect http en wikipedia org wiki Expect是一个
  • 在通用 Windows 应用程序中调用 FetchAttributesAsync 后 ApproximateMessageCount 始终为 null

    我正在制作一个小型应用程序 应列出我的 Azure 队列中的项目数量 当我在控制台应用程序中使用 FetchAttributesAsync 和 ApproximateMessageCount 时 在调用 FetchAttributesAsy
  • 从历史堆栈中删除活动

    我的应用程序在用户第一次运行应用程序时显示注册活动 如下所示 活动启动画面 欢迎来到游戏 注册帐户 ActivitySplashScreenSignUp 很好 填写此信息 ActivityGameMain 游戏主屏幕 因此 当用户单击每个屏
  • 导致崩溃转储的 Java 错误的解决方法

    我开发的一个程序偶尔会由于这个错误而导致 JVM 崩溃 http bugs java com bugdatabase view bug do bug id 8029516 http bugs java com bugdatabase vie
  • 如何更改 Facebook 应用程序的企业所有者? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否可以更改 Facebook 应用程序的企业主 如果是 怎么办 是的 在应用程序仪表板中有一个名为 角色 的部分 在那里您可以添加一个新用户作为管理
  • 如何通过 kubectl 代理访问此 Kubernetes 服务?

    我想通过以下方式访问我的 Grafana Kubernetes 服务kubectl 代理服务器 https kubernetes io docs user guide kubectl v1 7 proxy 但由于某种原因 即使我可以使其适用
  • 使用 HttpClient 时,为什么服务器响应中省略了 Content-Length 标头?

    我正在使用这个问题的源代码如何异步执行httprequest并显示下载响应的进度 https stackoverflow com questions 9594318 how to asynchronous perform a httpreq