标签: webclient

取消BackgroundWorker中的Webclient.DownloadFile

背景信息:我有一个程序通过 url 列表运行;每个 URL 一次下载一个,但在后台线程中运行以保持 UI 响应能力。为了报告进度,我使用 DownloadFileAsync 方法。我的问题是我希望能够有一个取消按钮来立即结束下载。我的代码大致如下

AutoResetEvent autoMobile = new AutoResetEvent(false);
WebClient dclient = new WebClient();

//setup event handlers... for progress, etc...

dclient.DownloadFileAsync(new Uri(egg.DownloadURL), egg.LocalFilePath);
autoMobile.WaitOne();

//end of DoWork
Run Code Online (Sandbox Code Playgroud)

我想不出插入循环来检查取消挂起的方法或位置。我对线程只有一点了解,也不完全理解 AutoResetEvent。

c# background webclient

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

在WP7 WebClient中添加标头

我正在使用其他c#app中的代码,我可以看到WP7中的代码不支持头文件.如何更改该代码以在WP7中工作

client.Headers.Add(HttpRequestHeader.Authorization, header_auth);
Run Code Online (Sandbox Code Playgroud)

c# webclient windows-phone-7

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

网络客户端和语言

我想用德语抓取谷歌建议:

string url = "http://google.de/complete/search?output=toolbar&q=" + txtResults.Lines[i].Replace(" ", "%20%");
WebClient client = new WebClient();
client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0");
client.Headers.Add("Accept-Encoding:", "gzip, deflate");
client.Headers.Add("Connection:", "keep-alive");
doc.Load(client.OpenRead(url), System.Text.Encoding.UTF8, true);
Run Code Online (Sandbox Code Playgroud)

但我总是得到国际结果,而在浏览器中,我通过给定的 .de url 得到德国结果。所以我添加了标题:

client.Headers.Add("Accept-Language:", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
Run Code Online (Sandbox Code Playgroud)

但现在我收到错误: 指定的值具有无效的 HTTP 标头字符

我还尝试通过以下方式设置我的应用程序的语言

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Run Code Online (Sandbox Code Playgroud)

但这也无济于事。

c# webclient web-scraping

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

C# NET.WebClient DownloadString() 问题 - 页面重定向

我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止效果很好。问题是我正在工作的网站有一个令人讨厌的习惯,有时会重定向或向地址添加内容。在某些页面中,它会在加载后添加“/about”,而在某些页面上,它会完全重定向到另一个页面。Web 客户端会感到困惑,因为它下载了 html 代码并开始解析链接,但由于其中许多链接的格式为“../../something”,所以一段时间后它就会崩溃,因为它根据以下内容计算链接第一个给定地址(在重定向或添加“/about”之前)。当新创建的页面从队列中出来时,它会抛出 404 Not Found 异常(令人惊讶)。

现在我可以自己将“/about”添加到每个页面,但是对于狗屎和傻笑,网站本身并不总是添加它......

我将不胜感激任何想法。感谢您抽出宝贵时间,祝一切顺利!

c# webclient web-crawler downloadstring

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

如何在 WebClient 中设置 User-Agent

我使用下面的代码打开对 youtube 视频的流请求,但它总是返回异常“远程服务器返回错误:NotFound”。然后我尝试使用 Fiddler 来检测问题,我看到 WebClient 自动将 User-Agent 字段设置为 NativeHost,而不是我的 User-Agent 如下。

我向 youtube 发送请求的代码:

private static Task<string> HttpGet(string uri)
{
    var task = new TaskCompletionSource<string>();

    var web = new WebClient();
    web.OpenReadCompleted += (sender, args) =>
    {
        if (args.Cancelled)
            task.SetCanceled();
        else if (args.Error != null)
            task.SetException(args.Error);
        else
        {
            //var bytes = args.Result.ReadToEnd();
            byte[] bytes = new byte[] { };
            using (MemoryStream memoryStream = new MemoryStream())
            {
                args.Result.CopyTo(memoryStream);
                bytes = memoryStream.ToArray();

                task.SetResult(Encoding.UTF8.GetString(bytes, 0, bytes.Length));
            }
        }
    };

    web.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (compatible; …
Run Code Online (Sandbox Code Playgroud)

c# user-agent webclient

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

使用 DownloadDataCompleted 方法时需要将附加参数传递给事件处理程序

我需要使用WebClient.DownloadDataAsync 方法来实现异步下载

我已经定义了事件处理程序如下:

 Private Sub DownloadCompleted(sender As Object, e As DownloadDataCompletedEventArgs)
        Dim bytes() As Byte = e.Result
        'do somthing with result
    End Sub
Run Code Online (Sandbox Code Playgroud)

但是我需要向这个事件处理程序传递一个额外的参数以及我创建 URI 的下载结果值。例如:

Dim pictureURI = "http://images.server.sample.com/" + myUniqueUserIdentifier

我需要myUniqueUserIdentifierDownloadCompletedsub 中进行回调。

我正在使用以下代码注册我的事件处理程序:

AddHandler webClient.DownloadDataCompleted, AddressOf DownloadCompleted

我只有一个猜测,扩展WebClient对象和覆盖DownloadDataCompleted对象。但在我要执行此操作之前,我想检查一下是否有更简单的解决方案?

谢谢你。

vb.net webclient

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

C# Webclient 下载文件 503 错误

下面是所有真正需要工作的代码。我有理由相信这个问题只与discogs有关。如果是discogs,我想知道一种解决方法,例如模拟浏览器。

使用下面的代码它应该连接到页面然后下载图像,但是当我运行它时会出现 503 错误。如果我使用相同的链接连接到页面,它将在我的浏览器中显示图像。

WebClient client = new WebClient();  
client.DownloadFile("https://img.discogs.com/h7oMsgLSWi7D6nBR8wdBwWulJ8w=/fit-in/600x600/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-9259029-1477514675-9740.jpeg.jpg", @"C:\Programming\Test\downloadimage.jpg");
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用 Imgur,并使用程序执行此操作,它会按预期下载图像。

client.DownloadFile("http://i.imgur.com/sFq0wAC.jpg", @"C:\Programming\Test\downloadimage.jpg");
Run Code Online (Sandbox Code Playgroud)

我能够使用客户端连接到discogs,甚至通过它运行搜索并使用client.DownloadString("url"); 以文本形式(尽管通过html)获取结果;

但我无法下载任何图像。我将不胜感激,此时我想要的只是图像。

c# webclient download server-error

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

使用 C# 从 url 下载 .webp 图像

我正在尝试从以下位置下载图像

http://aplweb.soriana.com/foto/fotolib/14/7503003936114/7503003936114-01-01-01.jpg

使用网络客户端。

当我在 Chrome 中浏览图像时,图像就在那里: 在此输入图像描述

url 以 .jpg 结尾,但图像为 .WEBP 格式。

    using (WebClient wb = new WebClient())
    {                  
         wb.DownloadFile("http://aplweb.soriana.com/foto/fotolib//14/7503003936114/7503003936114-01-01-01.jpg", "image.jpg");
    }
Run Code Online (Sandbox Code Playgroud)

我直接尝试过.DownloadData()、asyng方法、HttpClient、WebRequest。..我总是遇到同样的错误。

在此输入图像描述

任何想法?

c# webclient download webp

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

Java Rest 客户端 bodyToMono 通用

我的应用程序有一些针对不同休息端点的服务。逻辑总是相同的,所以我想使用继承和泛型来避免代码重复。但一行(bodyToMono(E[].class))不起作用。我不明白还有其他选择(也许是最佳实践方式)吗?

家长班级:

@Configuration
@Service
public abstract class AbstractEntitiesRestService<E>{

   protected abstract String getBaseUrl();

   @Autowired
   @Qualifier("webClient")
   protected WebClient WebClient;

    @Override
    public E[] getObjectsFromCustomQueryImpl(CustomQuery query) {
        return jtWebClient.get()
                .uri(getBaseUrl())
                .retrieve()
                .bodyToMono(E[].class) <---- Error!
                .block();
    }
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

@Configuration
@Service
public class UserService extends AbstractEntitiesRestService<User> {

    @Value("${endpoint}")
    protected String baseUrl;

    @Override
    protected  String getBaseUrl(){
        return baseUrl;
    }
    
    ...

}
Run Code Online (Sandbox Code Playgroud)

java generics webclient spring-webflux

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

如何在.NET中使用HttpClient而不是WebClient下载Excel文件?

我有以下代码

private void SaveFile(string linkToFile, string filename)
{
    using WebClient client = new();
    client.DownloadFile(linkToFile, ResourcePath + filename);
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何使用 HttpClient 而不是 WebClient 下载 Excel 文件?

c# webclient dotnet-httpclient

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