【发布时间】:2015-11-15 06:14:15
【问题描述】:
我想将文件http://img1.ak.crunchyroll.com/i/croll_manga/e/257692e8c297b8907e2607964454b941_1438752352_main 下载到字符串。
我在 C++ 中编写了函数
string opener(string url)
{
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return readBuffer;
}
这工作正常。
我用 C# 编写了这个类
namespace Crmrip
{
class opener
{
public static string open(string url)
{
using (WebClient page = new WebClient())
{
try
{
page.Encoding = Encoding.UTF8;
page.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
string result = page.DownloadString(url);
return result;
}
catch (WebException er)
{
MessageBox.Show(er.ToString());
return null;
}
}
}
}
}
这个类不能正常工作。下载的文件太大。 用 C++ 下载的文件有 487 778 字节,没问题。 用C#下载的文件有879 910,太大了。
为什么用 C# 下载的文件太大?
【问题讨论】:
-
你试过用
page.DownloadFile代替page.DownloadData吗? -
你的代码编译了吗?据我所知
page.DownloadData返回byte[]但你把它输入string -
抱歉,我粘贴了错误的代码。正确的应该是 page.DownloadString(url)。 page.DownloadData 来自我的测试下载文件作为数据。这是我为应用程序编写的类文件的代码,是的,代码是编译给我的代码。
-
来自 URL 的图像我想保存在磁盘上,但首先我必须通过 0x42 异或来解密他。