当我使用:
WebClient web = new WebClient();
web.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChangedWeb);
web.DownloadFileAsync(new Uri("http://www.website.com/Webs.exe"),
Environment.SpecialFolder.Desktop + @"\Webs.exe");
Run Code Online (Sandbox Code Playgroud)
...没有下载。
但如果我把它改成“
WebClient web = new WebClient();
web.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChangedWeb);
web.DownloadFileAsync(new Uri("http://www.website.com/Webs.exe"),
Environment.SpecialFolder.Desktop + "Webs.exe");
Run Code Online (Sandbox Code Playgroud)
然后它下载,但我得到一个名为“desktopWebs.exe”的文件。那么如何将文件保存到桌面呢?
谢谢
有没有什么好方法(除了安装 WireShark)将原始 http 请求数据发送到网络服务器?我怀疑我发送的请求不正确或格式错误,但我不知道如何通过调用 WebClient.UploadValues 获取发送到网络服务器的原始请求字符串。
我正在使用WebClient该类从 Web 服务器下载 .exe 文件。这是我用来下载文件的代码:
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.DownloadDataAsync(new Uri("http://www.blah.com/calc.exe"));
Run Code Online (Sandbox Code Playgroud)
我的应用程序有一个 ProgressBar,它会在回调 ( webClient_DownloadProgressChanged) 中更新:
private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar.Value = (int)e.BytesReceived;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我必须Maximum动态设置进度条的值。换句话说,我需要在下载开始之前知道我正在下载的文件的大小。
有没有办法获取文件的大小(在下载之前),因为它是 uri?
我正在尝试同时下载多个文件。如何确定并行下载的最佳文件数量?
我希望在我当前的 C# 项目中使用随机选择的英语单词。我想到的一种方法是访问以下网站并检索随机生成的单词:
http://www.wordgenerator.net/random-word-generator.php
但是,我真的不知道该怎么做。到目前为止,我已经尝试了以下代码(它没有按预期工作):
string downloadedString;
WebClient client;
client = new WebClient();
downloadedString = client.DownloadString("http://www.wordgenerator.net/random-word-generator.php#rname");
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何从给定的网站中获取随机生成的单词。另外,如果有人知道生成随机单词的更好方法,我也想听听。
我正在编写一个小的 C# 应用程序来管理我们供应商的安全数据表(化学品)。
目前,我手动搜索化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接。问题是我还有很多化学品要处理,所以最好使这个过程自动化。
例如:一种化学品的部件号如下:271004
包含 pdf 的链接在这里:
我一直在阅读页面源代码,但找不到 pdf 的链接
但我对 html/javascript 的了解目前是有限的.....
有没有办法从网站上提取pdf?
提前感谢您的任何建议:)
所以我认为Webclient.DownloadFileAysnc会有一个默认超时,但查看文档我在任何地方都找不到任何有关它的信息,所以我猜它没有。
我正在尝试从互联网下载文件,如下所示:
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += ((sender, args) =>
{
IndividualProgress = args.ProgressPercentage;
});
wc.DownloadFileCompleted += ((sender, args) =>
{
if (args.Error == null)
{
if (!args.Cancelled)
{
File.Move(filePath, Path.ChangeExtension(filePath, ".jpg"));
}
mr.Set();
}
else
{
ex = args.Error;
mr.Set();
}
});
wc.DownloadFileAsync(new Uri("MyInternetFile", filePath);
mr.WaitOne();
if (ex != null)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我关闭 WiFi(模拟互联网连接中断),我的应用程序就会暂停并且下载停止,但它永远不会向该方法报告这一情况DownloadFileCompleted。
因此,我想在我的WebClient.DownloadFileAsync方法上实现超时。这可能吗?
顺便说一句,我正在使用 .Net 4 并且不想添加对第三方库的引用,因此无法使用Async/Await关键字
我正在尝试在ac#HttpClientrequest中设置Content-Type标头"multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w".
到目前为止,我已经尝试过使用TryAddWithoutValidation哪个不会抛出任何异常/错误但是当我在fiddler中查看请求时它只是没有添加?见下面的代码.
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w");
response = client.PostAsync("https://example.com", byteContent).Result;
Run Code Online (Sandbox Code Playgroud)
我也尝试将我想要发送的字节数组转换为字符串并使用StringContent但是这会抛出一个异常,说"multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w"无效.
StringContent testStringcontent = new StringContent(Encoding.Default.GetString(allContentBytes), Encoding.UTF8, "multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w");
response = client.PostAsync("https://example.com", testStringcontent).Result;
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有类似的问题建议,并且看不到任何发送标题或不抛出某种异常.我应该放弃这个并使用我被告知更灵活的网络客户端吗?
所以基本上我想要做的是从我从前端作为参数获取的 URL 下载 Web API 内的 PDF 文件,然后直接将所述文件转换为 base64 字符串,而无需将文件保存在文件系统上。
我已经找到了,WebClient.Download(URL, File)但这意味着我必须保存文件。
那么有没有人知道任何其他适合我的解决方案?
我知道我可以发送 json,但我找不到如何发送 x-www-form-urlencoded。我不知道该尝试什么,因为我找不到任何东西。
WebClient wc = new WebClient();
string data = "channel_id=+12039273888&channel_type=phone&channel_verification=514950";
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string result = wc.UploadString("http://3.86.171.88/api/login", data);
System.Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud) c# ×10
webclient ×10
.net-4.0 ×1
c#-4.0 ×1
download ×1
filesize ×1
html ×1
httpclient ×1
javascript ×1
php ×1
progress-bar ×1
random ×1
timeout ×1
wpf ×1