标签: webclient

在 WPF C# 中将下载的文件保存到桌面时遇到问题

当我使用:

  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”的文件。那么如何将文件保存到桌面呢?

谢谢

c# wpf webclient

3
推荐指数
1
解决办法
1791
查看次数

调试 .net 的 WebClient

有没有什么好方法(除了安装 WireShark)将原始 http 请求数据发送到网络服务器?我怀疑我发送的请求不正确或格式错误,但我不知道如何通过调用 WebClient.UploadValues 获取发送到网络服务器的原始请求字符串。

c# webclient

3
推荐指数
1
解决办法
2689
查看次数

如何获取文件的大小(托管在 Web 服务器上)?

我正在使用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# webclient filesize progress-bar

3
推荐指数
1
解决办法
3533
查看次数

并行下载文件的最佳数量

我正在尝试同时下载多个文件。如何确定并行下载的最佳文件数量?

c# parallel-processing webclient downloadfileasync

3
推荐指数
1
解决办法
2333
查看次数

获取随机单词

我希望在我当前的 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)

有人可以告诉我如何从给定的网站中获取随机生成的单词。另外,如果有人知道生成随机单词的更好方法,我也想听听。

php c# random webclient

3
推荐指数
1
解决办法
4879
查看次数

从网站保存嵌入的pdf

我正在编写一个小的 C# 应用程序来管理我们供应商的安全数据表(化学品)。

目前,我手动搜索化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接。问题是我还有很多化学品要处理,所以最好使这个过程自动化。

例如:一种化学品的部件号如下:271004

包含 pdf 的链接在这里:

关联

我一直在阅读页面源代码,但找不到 pdf 的链接

但我对 html/javascript 的了解目前是有限的.....

有没有办法从网站上提取pdf?

提前感谢您的任何建议:)

html javascript c# webclient c#-4.0

3
推荐指数
2
解决办法
4万
查看次数

如何在 WebClient.DownloadFileAsync 上实现超时

所以我认为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关键字

c# timeout webclient .net-4.0

3
推荐指数
1
解决办法
5554
查看次数

无法使用c#HttpClient发送Content-Type标头

我正在尝试在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)

我已经尝试了所有类似的问题建议,并且看不到任何发送标题或不抛出某种异常.我应该放弃这个并使用我被告知更灵活的网络客户端吗?

c# webclient httpclient httpwebrequest

3
推荐指数
1
解决办法
2755
查看次数

C# - 从 URL 下载 PDF 并将其转换为 base64 而不将其保存在服务器上

所以基本上我想要做的是从我从前端作为参数获取的 URL 下载 Web API 内的 PDF 文件,然后直接将所述文件转换为 base64 字符串,而无需将文件保存在文件系统上。

我已经找到了,WebClient.Download(URL, File)但这意味着我必须保存文件。

那么有没有人知道任何其他适合我的解决方案?

c# webclient download

3
推荐指数
1
解决办法
9353
查看次数

如何在Web客户端的post请求中发送x-www-form-urlencoded?

我知道我可以发送 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# webclient

3
推荐指数
2
解决办法
3万
查看次数