0

私は、学力テストの結果に関する公開データベースを含む Web サイトを知っています。 http://nts.org.pk/NTSWeb/PPL_30Sep2012_Result/search.asp

私は C# のエキスパートですが、Web 開発の初心者です。

通常、Web ブラウザーを使用して、番号を入力してロールすると、サーバーが結果を返します。EG マイロール番号を使用: 3912125

私がする必要があるのは、C# アプリケーションを使用して、このロールの null 番号を通信し、結果から何かを取得することです。(任意の文字列は除外されます。その文字列から結果を解析します。)

クエリを送信するにはどうすればよいですか? 可能なクエリ文字列のリストがわからない場合。

私はこのコードを試しました:

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

あなたはそこまでの道のりです。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 に答える
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 に答える