C# 使用 WebClient 下载分块编码内容

2024-05-08

我编写了一个客户端应用程序,该应用程序应该从网络服务器下载文件,非常简单:

using (WebClient webClient = new WebClient())
{
    webClient.DownloadFile("http://localhost/audiotest/audio.wav", 
                           @"C:\audio.wav");
}

网站(音频文件所在位置:http://localhost/audiotest/audio.wav http://localhost/audiotest/audio.wav) 具有标头 Transfer-Encoding: chunked

当我运行该程序时,出现以下错误:

服务器违反了协议。部分=响应正文 详细信息=响应块格式无效

当服务器包含 Transfer-Encoding: chunked 标头时,如何下载文件?


我还没有尝试过,但这可能有效:

如果您强制发送 Http 1.0 而不是 Http 1.1 的请求,那么服务器将回复 指定内容长度的 HTTP 标头

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost/audiotest/audio.wav");
wr.ProtocolVersion = Version.Parse("1.0"); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

您将获得文件作为流response.GetResponseStream()

全部归功于作者this http://blog.degree.no/2011/06/webclient-httpwebresponse-problems-with-chunked-transfer-encoding/

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

C# 使用 WebClient 下载分块编码内容 的相关文章

随机推荐

  • 将脚本 Jquery 转换为 Javascript

    我需要将以下 jquery 脚本转换为 javascript
  • 将输入字段中的逗号替换为点

    欧洲国家在输入十进制数字时使用逗号 而不是点 所以我想在用户输入时用逗号替换点号 我知道 input number 可以做到这一点 但我需要对 IE 的支持 我想指令是最好的选择 我用下面的代码尝试了一下 但它失败了 directive r
  • 在 Restangular 中发送 GET 参数

    我在用着矩形 https github com mgonto restangular在我的项目和早期的项目中 这段代码对于检索对象数组效果很好 var params name Stack surname Overflow var servi
  • 添加零时奇怪的 numpy.sum 行为

    我了解数学上等效的算术运算如何因数值错误而导致不同的结果 例如 以不同的顺序对浮点数求和 然而 令我惊讶的是添加零sum可以改变结果 我认为无论如何 这始终适用于浮动 x 0 x 这是一个例子 我预计所有的线都恰好为零 有人可以解释为什么会
  • 关闭时不会调用 SetConsoleCtrlHandler

    我编写了一个在控制台中运行的应用程序 需要在系统关闭或用户注销之前进行快速备份 我的测试应用程序编写一个带有信号的文件 并在手动关闭控制台窗口 单击 X 时工作 但当控制台在关机或注销时关闭时 它不起作用 从我在 MSDN 上读到的内容来看
  • Flask:AttributeError:'UnboundField'对象没有属性'__call__'?

    为什么我会收到此错误 什么是 UnboundField 我需要了解什么才能在将来修复和避免此问题 当我访问时调试输出http 127 0 0 1 5000 signup http 127 0 0 1 5000 signup Attribut
  • 如何使用 R vctrs 包构建一个可以与 c() 结合的对象

    我试图了解如何用向量构建对象 我认为这很简单 但是当我在我的对象上使用 c 时遇到了麻烦 我们的对象有两个属性 x 和描述符 在本例中都是字符串 我的对象将具有不同类型的属性 我们构建了一个构造函数 new toy vector 我还没有在
  • 当一个模块安装了两个版本时 Perl 会做什么?

    我在正在使用的远程机器上没有 root 访问权限 因此我使用 cpanm 和 local lib 的组合 如下所述here https stackoverflow com a 2980715 1156644将 CPAN 模块安装到我的本地目
  • 提交表单时 ng-required 不起作用

    我在带有 required 属性的输入文本框中包含以下代码 但是当我跳出该字段或提交表单时 它不会阻止表单提交并通知用户该字段是必填字段 div class col sm 8 div
  • Node.js 子进程

    我试图弄清楚这对于 node js 子进程来说是否是一个不错的用例 我有一款多人游戏 人们可以进行 1v1 比赛 我应该为每场比赛使用子进程吗 并不是真的需要 由于节点是基于事件的 并且单个进程将能够处理数千个这样的玩家对 您将为每个这样的
  • 从什么时候起sqlite的持久日志模式成为Android中的默认日志模式?

    从什么时候起sqlite的持久日志模式成为Android中的默认日志模式 我知道Android版本4 1 1 API 16 中的日志模式已经改变 但这并不准确 因为发行说明中不包含此信息 我不知道是否可以在发行说明中找到 如果您认识的人确切
  • 使用jmeter测试多个网站

    如何使用jmeter测试100个不同的网站 来自DMOZ 我认为可以通过将jmeter与脚本集成来完成 基本上 该脚本是告诉 jmeter 从文本或 csv 文件中读取 URL 并将 http 请求采样器更改为文件中的 URL 以运行测试
  • 使用 VBA 清除 Excel 单元格格式而不清除 NumberFormat

    是否可以在不改变 的情况下清除Excel单元格格式和内容 使用VBA NumberFormat 给定的单元格 我尝试过 ClearContents ClearFormats 但 ClearFormats 删除了数字格式细胞也 请建议 你可以
  • 前置条件失败:从 iOS 13.4 开始,在 SwiftUI 中使用 GeometryReader 时输入索引无效

    昨天 我将 XCode 和我的项目升级到 iOS 13 4 我开始在使用 GeometryReaders 的视图周围看到很多失败 除了 前提条件失败 输入索引无效 之外 该错误没有显示任何内容 升级到 13 4 1 后我遇到了完全相同的问题
  • 使用 javascript onchange 下拉菜单

    我有一个简单的下拉菜单 我希望拥有它 以便如果用户选择 有一个婴儿 则消息会更改为 有一个婴儿 但对于任何其他选择 该消息保持不变 什么也没有 但这不起作用 有人可以帮忙吗 请玩我的jsfiddle http jsfiddle net Z9
  • 当 ToString() 具有协作对象时,为什么 WPF 数据绑定不显示文本?

    在一个简单的形式中 我绑定到许多不同的对象 有些放在列表框中 有些放在列表框中 有些放在列表框中 一些在文本块中 其中一些对象具有协作对象 在这些对象上ToString 方法在执行其工作时调用 通常是某种格式化程序 当我单步执行代码时 我发
  • 用Python识别图像

    我对 OCR 识别和 Python 都有点陌生 我想要实现的是从 Python 脚本运行 Tesseract 以 识别 tif 中的某些特定数字 我以为我可以为 Tesseract 做一些培训 但我在 Google 和 SO 上没有找到任何
  • 添加属性的描述

    如何为我的房产添加文字描述 我的代码 private bool SpaceKey public bool SpaceKey get return SpaceKey set SpaceKey value 看看描述 属性 http msdn m
  • 如何使用代码隐藏创建 StackPanel -> 边框 -> 背景

    我正在尝试设置 a 的属性TreeViewItem gt StackPanel在 C 中就像这个问题 https stackoverflow com questions 8203316 adding content to a treevie
  • C# 使用 WebClient 下载分块编码内容

    我编写了一个客户端应用程序 该应用程序应该从网络服务器下载文件 非常简单 using WebClient webClient new WebClient webClient DownloadFile http localhost audio