0

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

我是 C# 专家,但对 Web 开发是新手。

通常,使用网络浏览器,我们可以输入并滚动号码,然后服务器将结果发回。EG 使用我的卷号: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();
4

3 回答 3

0

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

string queryString = "RollNo=3912125";
string url = String.Format(@"http://foo/search.asp?{0}", queryString);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
于 2012-10-09T21:24:04.163 回答
0

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

于 2012-10-09T21:28:59.187 回答
0

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

您的其余代码应该可以工作,尽管@JamieSee 向您推荐的答案有一些关于using正确将内容包装在块中的非常好的建议

于 2012-10-09T22:40:59.400 回答