Tag: webclient

为什么我的电话让Twitter用户时间表返回“401 Unauthorized。”?

我从dev.twitter无耻地获取以下代码来获取特定用户的时间线: string endpoint = “https://api.twitter.com/1.1/statuses/user_timeline.json”; string user_name = “…..”; string ConsumerKey = “….”; string ConsumerSecret = “……..”; string Token = “…….”; string TokenSecret = “……..”; // oauth application keys var oauth_token = Token; var oauth_token_secret = TokenSecret; var oauth_consumer_key = ConsumerKey; var oauth_consumer_secret = ConsumerSecret; // oauth implementation details var oauth_version = “1.0”; var oauth_signature_method […]

无法找到WebClient

我已经在Stack Overflow(和谷歌)上搜索,但找不到解决我问题的具体答案。 我想从页面中读取一些内容。 我试过使用Webclient ,但这给了我这个错误: 找不到类型或命名空间名称’WebClient’(您是否缺少using指令或程序集引用?) 我试图在谷歌搜索如何解决这个错误,但没有找到正确的答案(我也尝试过HttpClient ,同样的结果)。 我如何确保获取其特定页面的内容? 顺便说一下,这就是我现在所拥有的: WebClient client = new WebClient(); // Use google as test page string downloadString = client.DownloadString(“http://www.gooogle.com”); 我正在使用Visual Studio 2015社区和ASP.Net v5

DownloadStringAsync在第一次调用时阻塞线程14秒

这只发生在我的一台机器上。 我认为这是一个环境配置问题。 所有计算机都运行ESET Smart Security软件防火墙。 有任何想法吗? using System; using System.Net; using System.Diagnostics; using System.Threading; namespace Test { static class Program { [STAThread] static void Main() { bool exit = false; WebClient wc = new WebClient(); DateTime before = DateTime.Now; wc.DownloadStringAsync(new Uri(“http://74.125.95.147”), “First”); // IP Address of google, so DNS requests don’t add to time. wc.DownloadStringCompleted […]

使用WebClient()计算要下载的总字节数

变量’totalBytes’始终为-1,因此我无法正确计算/更新进度条,为什么会发生这种情况? private void button1_Click(object sender, EventArgs e) { WebClient client = new WebClient(); client.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); client.DownloadFileAsync(new Uri(“http://example.com/test.mp3″), @”E:\Test.mp3”); } private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) { double bytesIn = double.Parse(e.BytesReceived.ToString()); label1.Text = Convert.ToString(bytesIn); double totalBytes = double.Parse(e.TotalBytesToReceive.ToString()); //stays at -1 label2.Text = Convert.ToString(totalBytes); double percentage = bytesIn / totalBytes […]

WebClient构建开销

我有一个客户端,它可以生成有限数量的并发Web请求。 我为此目的使用WebClient。 我目前有一个WebClient-s池,我创建一次并使用任何一个空闲的。 这种方法虽然变得有点麻烦,但我想知道预先构建的WebClient实例集合是否有任何好处,或者是否在运行中创建它们不会太麻烦?

Monotouch中的WebClient无法完成文件下载

我正在使用下载video文件的monotouch完成应用程序的开发。 像TEDTalks应用程序之类的东西。 但我遇到的问题是WebClient.DownloadFileAsync没有完全可靠地下载文件,但每次都经常挂起并且不会继续下载文件。 尽管我已经监控了应用程序的内存使用情况,但不受下载文件大小的影响,但文件较大时问题最严重。 我用来在本地写文件的文件流定期刷新。 我尝试重写该类以使用具有相同结果的HttpWebRequest。 任何想法将不胜感激,谢谢。

WP8 TaskCompletionSource没有得到结果

我有一个WebClient的扩展方法(WP8) public static Task DownloadStringTask(this WebClient webClient, Uri uri) { var tcs = new TaskCompletionSource(); webClient.DownloadStringCompleted += (s, e) => { if (e.Error != null) { tcs.TrySetException(e.Error); } else if (e.Cancelled) { tcs.TrySetCanceled(); } else { tcs.TrySetResult(e.Result); } }; webClient.DownloadStringAsync(uri); return tcs.Task; } 并调用此方法 public string GetResult() { var task = new WebClient().DownloadStringTask(new Uri(“http:\\www.foo.com”)); return […]

并行请求刮取网站的多个页面

我想用一个包含大量有趣数据页面的网站,但由于源非常大,我想multithreading并限制过载。 我使用Parallel.ForEach来启动10个任务的每个块,然后在main for循环中等待,直到活动线程的数量开始下降到阈值以下。 为此我使用活动线程的计数器,我在使用WebClient启动新线程时递增,并在触发WebClient的DownloadStringCompleted事件时递减。 最初的问题是如何使用DownloadStringTaskAsync而不是DownloadString并等待Parallel.ForEach启动的每个线程都已完成。 这已通过一种解决方法解决:主要foor循环中的计数器( activeThreads )和Thread.Sleep 。 使用await DownloadStringTaskAsync而不是DownloadString应该通过在等待DownloadString数据到达时释放线程来提高速度吗? 回到原来的问题,是否有办法更优雅地使用TPL,而没有涉及计数器的解决方法? private static volatile int activeThreads = 0; public static void RecordData() { var nbThreads = 10; var source = db.ListOfUrls; // Thousands urls var iterations = source.Length / groupSize; for (int i = 0; i RecordUri(item)); //I want to wait here until process […]

附加信息:远程服务器返回错误:(404)Not Found。 MVC

我正在尝试获取https://www.americasarmy.com/soldier/1309069的源代码 使用以下代码: using (WebClient client = new WebClient()) { ViewBag.htmlCode = client.DownloadString(“https://www.americasarmy.com/soldier/1309069”); }

使用WebClient进行POST调用时,如何在NameValueCollection中发送重复值?

遗憾的是,我受一个强制在POST调用中重用参数名称的API的支配。 最终结果POST params看起来像这样: ArgNameA: xyz ArgNameB: abc ArgNameC: 123 ArgNameD: LMN ArgNameC: 789 ArgNameD: JKL ArgNameC: … ArgNameD: … 你明白了。 我目前正在使用NamedValueCollection并将其发送到WebClient来进行POST调用。 这工作正常但是当我尝试反复重用ArgNameC和ArgNameD时,它似乎识别出已经存在于集合中的名称,因此不会添加它们(或者它可能会更新它们,我不确定)。 如何使用允许我重用POST参数名称的WebClient进行POST?