我正在写一个程序,当textBox1改变时:
URL = "http://example.com/something/";
URL += System.Web.HttpUtility.UrlEncode(textBox1.Text);
s = new System.Net.WebClient().DownloadString(URL);
Run Code Online (Sandbox Code Playgroud)
我想限制允许的DownloadString(URL)时间为500毫秒.如果超过,取消它.
我怎样才能在C#现代UI中做到这一点?
var url = "http://ajax.googleapis.com/ajax/services/feed/load?q=http%3A%2F%2Fwww.digg.com%2Frss%2Findex.xml&v=1.0";
var wc = new WebClient();
var rawFeedData = wc.DownloadString(url);
//You can use System.Web.Script.Serialization if you don't want to use Json.NET
JavaScriptSerializer ser = new JavaScriptSerializer();
FeedApiResult foo = ser.Deserialize<FeedApiResult>(rawFeedData);
//Json.NET also return you the same strong typed object
var apiResult = JsonConvert.DeserializeObject<FeedApiResult>(rawFeedData);
Run Code Online (Sandbox Code Playgroud)
它给我在WebClient和错误中的错误 System.Web.Script.Serialization
我正在使用此代码来检索网址内容:
private ArrayList request(string query)
{
ArrayList parsed_output = new ArrayList();
string url = string.Format(
"http://url.com/?query={0}",
Uri.EscapeDataString(query));
Uri uri = new Uri(url);
using (WebClient client = new WebClient())
{
client.DownloadStringAsync(uri);
}
// how to wait for DownloadStringAsync to finish and return ArrayList
}
Run Code Online (Sandbox Code Playgroud)
我想使用DownloadStringAsync因为DownloadString挂起应用程序GUI,但我希望能够返回结果request.我怎么能等到DownloadStringAsync完成请求?
我编写了一个小程序来分析StackExchange API中的配置文件数据,但是api会向我发送unsarse-/unreadable数据.
收到的数据:(使用c#自行下载)
\ u001f\B\0\0\0\0\0\U0004\0mRMo0\F /:d $ C'^ {/\u0006\u0018G> \我\ u0015\U0004݀d> GRL'o\u0004G%JP\u001c-EM> 0Xbm〜\u0018tk\u0014M] rdLGv0〜FJ = 1\u00031I> kTRA \"(/ +; NL\u0018 2 H\u0014P藄XaLw#3\U0002 +\u007f\u0010\u000fp】v\u007f \吨ڧ\nf "\ u0018 \00ƺ 1x#j ^- c AX\t \u001aT @ qj \u001aU7 \u0014 \"\ a ^ \b #\ u001eQG%Y \吨חq00K\AV\u0011 {ظ\ u0005 \"\ u001d + |\u007f'\ u0016〜 8\u007f\U0001-H] O\u007fVo\u007f\U0001〜Y\U0003\U0002\0\0
想要的数据:(从我的浏览器复制粘贴)
{ "物品":[{ "badge_counts",{ "青铜":987, "银":654, "金":321}, "ACCOUNT_ID" 123456789 "is_employee":假"LAST_MODIFIED_DATE":1250612752" last_access_date ":1250540770,"年龄":0," reputation_change_year ":987," reputation_change_quarter ":654," reputation_change_month ":321," reputation_change_week ":98," reputation_change_day ":76,"信誉":9876," CREATION_DATE" :1109670518,"user_type":"registered","user_id":123456789,"accept_rate":0,"location":"Australia","website_url":" http://example.org ","link":" …
我想从Pirate Bay的Search查询中获取源代码,我在我的代码中有这个,但它没有返回任何内容:
WebClient webpage = new WebClient();
string source= webpage.DownloadString("http://thepiratebay.sx/search/documentary/0/99/0");
Run Code Online (Sandbox Code Playgroud) 有人能指点我一个教程或提供一些示例代码来调用System.Net.WebClient().DownloadString(url)方法而不会在等待结果时冻结UI吗?
我认为这需要用线程来完成?是否有一个简单的实现我可以使用没有太多的开销代码?
谢谢!
实现了DownloadStringAsync,但UI仍然处于冻结状态.有任何想法吗?
public void remoteFetch()
{
WebClient client = new WebClient();
// Specify that the DownloadStringCallback2 method gets called
// when the download completes.
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(remoteFetchCallback);
client.DownloadStringAsync(new Uri("http://www.google.com"));
}
public void remoteFetchCallback(Object sender, DownloadStringCompletedEventArgs e)
{
// If the request was not canceled and did not throw
// an exception, display the resource.
if (!e.Cancelled && e.Error == null)
{
string result = (string)e.Result;
MessageBox.Show(result);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从URL下载字符串.不幸的是,它很慢.
这是我的代码:
// One of these types for two bad solutions anyway
// byte[] result = new byte[12];
// string result;
using (var webClient = new System.Net.WebClient())
{
String url = "http://bg2.cba.pl/realmIP.txt";
//result = webClient.DownloadString(url); // slow as hell
//webClient.OpenRead(url).Read(result, 0, 12); // even slower
}
Run Code Online (Sandbox Code Playgroud)
这需要大约4-5秒,这对我来说似乎非常不合适......
此网址的内容为IP
XX.YYY.ZZ.FF
Run Code Online (Sandbox Code Playgroud) 我有一个巨大的网页列表,显示一个状态,我需要检查.一些网址位于同一网站内,另一个网址位于另一个网站上.
现在我正试图通过使用下面的代码以并行的方式做到这一点,但我觉得我造成了太多的开销.
while(ListOfUrls.Count > 0){
Parallel.ForEach(ListOfUrls, url =>
{
WebClient webClient = new WebClient();
webClient.DownloadString(url);
... run my checks here..
});
ListOfUrls = GetNewUrls.....
}
Run Code Online (Sandbox Code Playgroud)
这可以用更少的开销完成,并且可以更多地控制我使用/重用的Web客户端和连接数量吗?那么,最终工作可以更快完成吗?
c# parallel-processing webclient downloadstring parallel.foreach
我正在开发一个从页面上的文本文件中获取文本的应用程序. 示例链接: http ://test.com/textfile.txt
该文本文件包含以下文本:
1 Milk Stuff1.rar
2 Milk Stuff2.rar
3 Milk Stuff2-1.rar
4 Union Stuff3.rar
Run Code Online (Sandbox Code Playgroud)
我想要做的是如下,删除每一行的所有内容,除了以'Stuff'开头并以'.rar'结尾的"单词".
问题是,大多数简单的解决方案,比如使用.Remove,.Split或.Replace都会失败.这是因为,例如,使用空格格式化字符串最终返回:
1
Milk
Stuff1.rar\n2
Milk
Stuff2.rar\n3
Milk
Stuff2-1.rar\n4
Union
Stuff3.rar\n
Run Code Online (Sandbox Code Playgroud)
我敢打赌,它并不像看起来那么难,但我会帮助你给予我任何帮助.
Ps:为了清楚起见,这就是我希望它返回的内容:
Stuff1.rar
Stuff2.rar
Stuff2-1.rar
Stuff3.rar
Run Code Online (Sandbox Code Playgroud)
我目前正在使用此代码:
client.HeadOnly = true;
string uri = "http://test.com/textfile.txt";
byte[] body = client.DownloadData(uri);
string type = client.ResponseHeaders["content-type"];
client.HeadOnly = false;
if (type.StartsWith(@"text/"))
{
string[] text = client.DownloadString(uri);
foreach (string word in text)
{
if (word.StartsWith("Patch") && word.EndsWith(".rar"))
{
listBox1.Items.Add(word.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,但你明白了.
先感谢您!
我试图在使用webclient和下载字符串从网站下载的字符串中找到Mauricio的索引.但是,在网站上它包含一个外国人物Maurício.所以我在别处找到了一些代码
string ToASCII(string s)
{
return String.Join("",
s.Normalize(NormalizationForm.FormD)
.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark));
}
Run Code Online (Sandbox Code Playgroud)
转换外国字符.我测试了代码并且它可以工作.所以我遇到的问题是,当我下载字符串时,它会下载为MaurA-cio.我试过了两个
wc.Encoding = System.Text.Encoding.UTF8;
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
也没有阻止它作为MaurA-cio下载.
(另外,我无法更改搜索,因为我从列表中获取搜索词).
我还能尝试什么?谢谢
我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止效果很好。问题是我正在工作的网站有一个令人讨厌的习惯,有时会重定向或向地址添加内容。在某些页面中,它会在加载后添加“/about”,而在某些页面上,它会完全重定向到另一个页面。Web 客户端会感到困惑,因为它下载了 html 代码并开始解析链接,但由于其中许多链接的格式为“../../something”,所以一段时间后它就会崩溃,因为它根据以下内容计算链接第一个给定地址(在重定向或添加“/about”之前)。当新创建的页面从队列中出来时,它会抛出 404 Not Found 异常(令人惊讶)。
现在我可以自己将“/about”添加到每个页面,但是对于狗屎和傻笑,网站本身并不总是添加它......
我将不胜感激任何想法。感谢您抽出宝贵时间,祝一切顺利!
我有这个为ex: Link
这段代码:
const String nick = "Alex";
const String log = "http://demonscity.combats.com/zayavka.pl?logs=";
foreach (DateTime cd in dateRange)
{
string str = log + String.Format("{0:MM_dd_yy}", cd.Date) + "&filter=" + nick;
String htmlCode = wc.DownloadString(str);
}
Run Code Online (Sandbox Code Playgroud)
返回一些东西...."<\ b\0\0\0\0\0 \0я•XYsЫЦ~зЇёѕ™d)bг.тBҐ$ЪRЖ'<2УN&сh@р'"\ f\0J--_Фџђ§¤ нt|г6ќѕУЄђ0'IQtТґcμо№X(jі-Щ/Ђі|?g`yҐц"
其他链接工作正常.我认为问题在于代码页,我该如何解决?或者是服务器问题?
c# ×12
downloadstring ×12
webclient ×8
.net-3.5 ×1
asynchronous ×1
encoding ×1
httprequest ×1
json ×1
limit ×1
performance ×1
regex ×1
request ×1
system.web ×1
time ×1
web-crawler ×1