- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用以下代码通过 WebResponse 获取 wmv 文件。我正在使用一个线程来调用这个函数:
static void GetPage(object data)
{
// Cast the object to a ThreadInfo
ThreadInfo ti = (ThreadInfo)data;
// Request the URL
WebResponse wr = WebRequest.Create(ti.url).GetResponse();
// Display the value for the Content-Length header
Console.WriteLine(ti.url + ": " + wr.Headers["Content-Length"]);
string toBeSaved = @"C:\Users\Kevin\Downloads\TempFiles" + wr.ResponseUri.PathAndQuery;
StreamWriter streamWriter = new StreamWriter(toBeSaved);
MemoryStream m = new MemoryStream();
Stream receiveStream = wr.GetResponseStream();
using (StreamReader sr = new StreamReader(receiveStream))
{
while (sr.Peek() >= 0)
{
m.WriteByte((byte)sr.Read());
}
streamWriter.Write(sr.ReadToEnd());
sr.Close();
wr.Close();
}
streamWriter.Flush();
streamWriter.Close();
// streamReader.Close();
// Let the parent thread know the process is done
ti.are.Set();
wr.Close();
}
文件似乎可以正常下载,但 Windows Media Viewer 无法正确打开文件。关于无法支持文件类型的一些愚蠢的错误。
我错过了什么非常简单的事情?
最佳答案
您只需将其下载为二进制文件而不是文本文件。这里有一个方法应该可以为您解决问题。
public void DownloadFile(string url, string toLocalPath)
{
byte[] result = null;
byte[] buffer = new byte[4097];
WebRequest wr = WebRequest.Create(url);
WebResponse response = wr.GetResponse();
Stream responseStream = response.GetResponseStream;
MemoryStream memoryStream = new MemoryStream();
int count = 0;
do {
count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
if (count == 0) {
break;
}
}
while (true);
result = memoryStream.ToArray;
FileStream fs = new FileStream(toLocalPath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
fs.Write(result, 0, result.Length);
fs.Close();
memoryStream.Close();
responseStream.Close();
}
关于c# - 如何使用 WebResponse 下载 .wmv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183698/
我正在尝试使用 C# 和 WebRequest 从 Internet 获取一个大文件。到目前为止,我拥有的所有其他东西都工作正常,但似乎我得到的响应中间的某些部分被删除了。我尝试打印出 respons
我正在尝试编写一个简单的程序来从网站返回状态代码。当前使用 HttpWebRequest 和 HttpWebResponse 类。然而,它们的工作方式对我来说似乎很糟糕,只有在 200/OK 时才会返
我目前正在研究一个帮助我创建带有 cookie 和 POST 参数的 WebRequest 的类。但是 response.cookies 总是空的。我如何获取返回的 cookie 并将它们与下一个请求
所以我正在制作一个程序,它几乎可以生成批量 HttpWebRequests。在这个程序中,速度是主要的。如果我能找到将 HttpWebRequests 增加一毫秒的方法,那就太好了。 好吧,我的问题是
网站上有一个 PHP 脚本。我还有一个 C# winforms 程序,它使用 WebRequest/WebResponse 方法发送 POST 消息。 此 PHP 脚本连接到 mysql 数据库,获取
使用 C#,我需要确定开始从 WebRequest 接收响应所需的时间(目前,我不担心下载完整响应所需的时间)。 据我所知,为此我需要使用 WebRequest 的异步方法。这是我想出的: publi
我们正在将我们的解决方案之一移植到 PCL,但在 NET 框架基类库的受支持类和属性方面面临很多问题。为了使相同的功能在不同的平台上工作,我们实现了 WebClient,但我们在 WebResporn
我正在尝试使用 Web 服务将数组返回到我的 GUI,但我不知道如何从 WebResponse 中实际提取数组。 这是 GUI 中调用 Web 服务的方法: public static ArrayLi
我正在使用 C# 开发 Windows 应用商店应用程序,我是这个平台的新手(我主要从事 IOS 和 Android 方面的工作)。 我有一个简单的异步方法可以从远程服务器下载原始数据。它工作正常,除
我一直在 F# 交互式 session 中尝试一些基本的 HTTP 请求响应操作,以尝试更好地感受这门语言。这里的一切似乎都按预期工作,除了当我获得 HTTP 请求的响应流时,我似乎永远无法从中读取任
WebResponse response; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Crea
我知道这是一个菜鸟问题,但只是想知道 GetResponseStream() 是否可以在任何情况下返回 null? 最佳答案 好吧,这有点取决于具体的子类 - 但我从未见过任何这样做的子类,而且它没有
我有一个 .Net Framework #4.0 应用程序,它使用 WebRequest/WebResponse 类发出大量 Web 请求,因为我发现它有内存泄漏(或者我做错了什么)我写了一些简单的小
通常,人们会编写类似这样的代码来使用 WebRequest 下载一些数据。 using(WebResponse resp = request.GetResponse()) // WebRequest
private void RespCallback(IAsyncResult asynchronousResult) { try { WebRequest myWebR
我在 C# 中有一个函数,它通过从路由器页面检索 64b XML 来获取 Internet 的状态 public bool isOn() { HttpWebRe
从 WebResponse 获取文件(在本例中为 .PDF,但任何文件都可以)并将其放入 MemoryStream 的最佳方法是什么?使用 WebResponse 中的 .GetResponseStr
调用初始 HttpWebResponse.GetResponseStream() 并读取流后,该流已完成且无法重用。 我遇到一种情况,我需要检查响应的内容,如果它是特定数据,则获取另一个页面,然后将新
我使用 MVC4 Web API 创建了一个 RESTful 网络服务。如果出现问题,我将抛出 WebException。 throw new WebException("Account not fo
我正在尝试编写一个单元测试,其中我的 sut (authMock) 的依赖项应该抛出一个具有特定响应的 Webexception(将在 sut 中相应地解析的 json)。但是,我无法像这样使用 Mo
我是一名优秀的程序员,十分优秀!