C# HttpWebRequest虚拟按钮单击
我有我的html php网页,有表单、输入和sumbit按钮。对于html请求,我试图填充一些字段并按下一个按钮,但我不能。 以下是C#代码: 和2个php文件: request.phpC# HttpWebRequest虚拟按钮单击,c#,.net,httpwebrequest,C#,.net,Httpwebrequest,我有我的html php网页,有表单、输入和sumbit按钮。对于html请求,我试图填充一些字段并按下一个按钮,但我不能。 以下是C#代码: 和2个php文件: request.php <html> <head> <title>HTTP Request</title> </head> <body> <form action ="http://localhost/response.php" method ="POST"
<html>
<head>
<title>HTTP Request</title>
</head>
<body>
<form action ="http://localhost/response.php" method ="POST">
<input type="text" name="name">
<input type="password" name="pass">
<select name="country">
<option value="-1" selected="selected">Select State/Country</option>
<option value="82">Select 1</option>
<option value="83">Select 2</option>
</select>
<input type="submit" name="btn">
</form>
</body>
</html>
HTTP请求
选择州/国家/地区
选择1
选择2
response.php
<?php
$data = $_POST["name"];
echo $data;
?>
是我网站的链接吗
那么,我怎样才能按下这个按钮呢?我在中试过这个按钮,它成功了:
void Main()
{
var request = (HttpWebRequest)WebRequest.Create("http://128.75.49.209/response.php");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
using (var stream = request.GetRequestStream())
{
var buffer = Encoding.UTF8.GetBytes("name=asd&pass=asd&country=82&btn=Submit+Query");
stream.Write(buffer,0,buffer.Length);
}
var response = (HttpWebResponse)request.GetResponse();
string result = String.Empty;
using (var reader = new StreamReader( response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
Console.WriteLine(result);
}
问题是您在代码中使用了
request.php
而不是response.php
。您没有!您只需要将数据发布到response.php—您需要模拟客户端正在做的事情—当您单击按钮时,它会将数据发布到服务器。使用类似Fiddler的工具查看请求的外观。一旦你知道了这一点,那么你已经拥有的c代码就是一个好的开始。
void Main()
{
var request = (HttpWebRequest)WebRequest.Create("http://128.75.49.209/response.php");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
using (var stream = request.GetRequestStream())
{
var buffer = Encoding.UTF8.GetBytes("name=asd&pass=asd&country=82&btn=Submit+Query");
stream.Write(buffer,0,buffer.Length);
}
var response = (HttpWebResponse)request.GetResponse();
string result = String.Empty;
using (var reader = new StreamReader( response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
Console.WriteLine(result);
}