gpt4 book ai didi

c# - 在 C# 中使用 Windows 应用程序执行 http 方法

转载 作者:可可西里 更新时间:2023-11-01 09:50:09 25 4
gpt4 key购买 nike

有许多站点在表单提交时调用脚本并使用 HTTP POST 或 GET 传递参数,使用网络调试器我发现传递的参数。现在我希望通过 C# 中的 Windows 应用程序做同样的事情。我怎样才能实现这样的功能?

我目前在 C# 中使用 HttpWebRequest 和 HttpWebResponse 类。但这很痛苦,因为我必须为我尝试加载和工作的每个页面编写明确的代码。例如,我试图将用户名和密码传递给一个 php 页面并获取响应,这将发送一个 cookie 和一个页面作为返回,我根据这些信息确定用户是否已登录。

HttpWebRequest loginreq = createreq("http://www.indyarocks.com/mobile/index.php");
String logintext = "username=" + TxtUsrname.Text + "&pass=" + TxtPasswd.Password + "&button.x=0&button.y=0";
loginreq.ContentLength = logintext.Length;
StreamWriter writerequest = new StreamWriter(loginreq.GetRequestStream());
writerequest.Write(logintext);
writerequest.Close();
HttpWebResponse getloginpageresponse = (HttpWebResponse)loginreq.GetResponse();
cookie = getloginpageresponse.Cookies[0];
BinaryFormatter bf1 = new BinaryFormatter();
Stream f1 = new FileStream("E:\\cookie.dat", FileMode.OpenOrCreate);
bf1.Serialize(f1, cookie);
f1.Close();

string nexturl = getloginpageresponse.Headers[HttpResponseHeader.Location];
StreamReader readresponse = new StreamReader(getloginpageresponse.GetResponseStream());
if (nexturl == "p_mprofile.php")
{
MessageBox.Show("Login Successful");
GrpMsg.IsEnabled = true;
}
else if (nexturl == "index.php?msg=1")
{
MessageBox.Show("Invalid Credentials Login again");
}

这是我的createreq类

 private HttpWebRequest createreq(string url)
{
HttpWebRequest temp = (HttpWebRequest)WebRequest.Create(url);
temp.Method = "POST";
temp.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; FDM)";
temp.KeepAlive = true;
temp.ContentType = "application/x-www-form-urlencoded";
temp.CookieContainer = new CookieContainer();
temp.AllowAutoRedirect = false;
return temp;
}

我在正确的轨道上吗?有没有更好的方法呢?

最佳答案

你应该使用 System.Net.WebClient.

您可以使用它使用您喜欢的任何方法和 header 发出请求,并通过简单的流读取获得结果页面。

MSDN 页面上有一个简单示例,但使用它的一些示例代码可能如下所示:

WebClient webclient= new WebClient();

using (StreamReader reader = new StreamReader(webclient.OpenRead("http://www.google.com")))
{
string result = reader.ReadToEnd();
// Parse web page here
}

关于c# - 在 C# 中使用 Windows 应用程序执行 http 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com