与ASP网站进行通信

时间:2012-10-09 21:19:11

标签: c# asp.net httpwebrequest

我知道一个网站,其中包含一个开放的学术测试结果数据库。 http://nts.org.pk/NTSWeb/PPL_30Sep2012_Result/search.asp

我是C#的专家,但是网络开发的新手。

通常,使用网络浏览器,我们可以输入和滚动号码,服务器发回结果。例如。使用我的Roll Num:3912125

我需要做的是,使用C#应用程序来传达这个滚动空数并得到我的结果。 (除了任何字符串,我将从该字符串中解析出我的结果。)

如何发送查询?当我不知道可能的查询字符串列表时。

我试过这段代码:

string queryString = "RollNo=3912125";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://nts.org.pk/NTSWeb/PPL_30Sep2012_Result/search.asp");
request.UseDefaultCredentials = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";

byte[] requestBytes = Encoding.UTF8.GetBytes(queryString);
request.ContentLength = requestBytes.Length;

using (var requestStream = request.GetRequestStream())
{
    requestStream.Write(requestBytes, 0, requestBytes.Length);
    requestStream.Close();
}
WebResponse response = request.GetResponse();
textBox1.AppendText(((HttpWebResponse)response).StatusDescription);
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();

textBox1.AppendText(responseFromServer);

reader.Close();
dataStream.Close();
response.Close();

3 个答案:

答案 0 :(得分:0)

您必须将查询字符串附加到网址,如下所示:

string queryString = "RollNo=3912125";
string url = String.Format(@"http://foo/search.asp?{0}", queryString);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

答案 1 :(得分:0)

您应该查看我对C# https login and download file的回答中的代码。它很好地演示了如何执行POST请求。至于知道在POST中查询格式化字符串的有效用途,只需在页面内容中查找适当的输入元素即可。看起来你拥有的东西(RollNo)是正确的。但是,您可能还需要将提交按钮值添加到您的请求中,具体取决于服务器的行为方式,为您提供类似的功能。 RollNo=3912125&submit=submit

答案 2 :(得分:0)

你大部分都在那里。您的queryString应该看起来像RollNo=3912125&Submit=+Search+。当您致电WebRequest.Create时,网址实际上应为http://nts.org.pk/NTSWeb/PPL_30Sep2012_Result/result.asp

你的代码的其余部分应该可行,尽管@JamieSee建议的答案对于正确包装using块中的内容有一些非常好的建议

相关问题