我正在尝试使用表单加载,以便计算pastebin raw&中的行数。将值返回到文本框。我绞尽脑汁,仍然无法弄明白。
textBox1.Text = new WebClient().DownloadString("yourlink").
答案 0 :(得分:0)
我将评论扩展到答案
如前所述,您需要HttpRequest
或WebRequest
来获取字符串的内容。
也许是new WebClient().DownloadString(url);
,但我更喜欢使用WebRequest
,因为.NET Core也支持它。
您需要做的是从html中提取 RAW TextArea 对象的内容。我知道,人们可能会hate me,但我使用regex来完成这项任务。或者,您可以使用html解析器。
原始数据包含在具有以下属性的textarea中:
<textarea id="paste_code" class="paste_code" name="paste_code" onkeydown="return catchTab(this,event)">
所以regex模式如下所示:
private static string rgxPatternPasteBinRawContent = @"<textarea id=""paste_code"" class=""paste_code"" name=""paste_code"" onkeydown=""return catchTab\(this,event\)"">(.*)<\/textarea>";
由于html代码分布在多行上,因此我们的Regex必须使用单行选项。
Regex rgx = new Regex(rgxPatternPasteBinRawContent, RegexOptions.Singleline);
现在找到包含RAW数据的匹配项:
string htmlContent = await GetHtmlContentFromPage("SomePasteBinURL");
//Possibly your new WebClient().DownloadString("SomePasteBinURL");
//await not necesseraly needed here!
Match match = rgx.Match(htmlContent);
string rawContent = "ERROR: No Raw content found!";
if (match.Groups.Count > 0)
{
rawContent = match.Groups[1].Value;
}
int numberOfLines = rawContent.Split('\n').Length + 1;
你已经完成了。
WebRequest
对我来说是这样的:
private static async Task<string> GetHtmlContentFromPage(string url)
{
WebRequest request = WebRequest.CreateHttp(url);
WebResponse response = await request.GetResponseAsync();
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
readStream = new StreamReader(receiveStream);
string data = readStream.ReadToEnd();
response.Dispose();
readStream.Dispose();
return data;
}