Kode untuk mengisi dan submit form diatas adalah sebagai berikut:
// string URI untuk submit form.
string uriString = " http://www.xxx.com/Login.aspx ";
// String data yang akan dikirimkan.
string postString = "Namapengguna=pengguna1&kata sandi=kata sandi1";
//Inisialisasi Klien Web
Klien Web webKlien = Klien Web baru();
webClient.Headers.Add("Tipe Konten", "application/x-www-form-urlencoded");
//Mengonversi string menjadi array byte
byte[] postData = Pengkodean.ASCII.GetBytes(postString);
//Unggah data dan kembalikan array byte halaman
byte[] responData = webClient.UploadData(uriString, "POST", postData);
//Mengonversi array byte yang dikembalikan menjadi string (HTML)
string srcString = Pengkodean.UTF8.GetString(responseData);
srcStrinig adalah HTML halaman yang dikembalikan setelah mengirimkan formulir. Bagaimana? Ini sangat sederhana.
Namun kode di atas dapat mengirimkan formulir yang dihasilkan oleh ASP atau JSP, tetapi tidak dapat mengirimkan formulir ASP.NET. Karena saat mengirimkan formulir ASP.NET, nilai harus ditetapkan ke "__VIEWSTATE" dan "__EVENTVALIDATION". Nilai "__VIEWSTATE" dan "__EVENTVALIDATION" dapat ditemukan dengan mengklik kanan "Lihat Sumber" pada halaman yang akan dikirimkan. sebagai berikut:
id="__VIEWSTATE" value="/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0="
id="__EVENTVALIDATION" value="/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc"
Nilai "__VIEWSTATE" dan "__EVENTVALIDATION" yang diperoleh melalui "View Source File" tidak dapat langsung dikirimkan ke formulir dan perlu diubah menjadi string yang dikodekan URL.
viewState = Sistem.Web.HttpUtility.UrlEncode(viewState);
eventValidation = Sistem.Web.HttpUtility.UrlEncode(eventValidation);
Kode lengkapnya adalah sebagai berikut:
// Teks tombol submit
string kirimButton = "Masuk";
//VeiwState halaman (dapat diperoleh dengan membuka halaman melalui IE, klik kanan "View Source File")
string viewState = "/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0=";
//EventValidation halaman (dapat diperoleh dengan membuka halaman melalui IE, klik kanan "View Source File")
string eventValidation = "/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc"
;
viewState = Sistem.Web.HttpUtility.UrlEncode(viewState);
(
eventValidation);
{
// String URI untuk mengirimkan formulir.
string uriString = " http://www.xxx.com/Login.aspx ";
// String data yang akan dikirimkan. Formatnya adalah sebagai berikut: pengguna=uesr1&kata sandi=123
string postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;
//Inisialisasi Klien Web
Klien Web webKlien = Klien Web baru();
webClient.Headers.Add("Tipe Konten", "application/x-www-form-urlencoded");
//Mengonversi string menjadi array byte
byte[] postData = Pengkodean.ASCII.GetBytes(postString);
//Unggah data dan kembalikan array byte halaman
byte[] responData = webClient.UploadData(uriString, "POST", postData);
// Ubah array byte yang dikembalikan menjadi string (HTML);
//Halaman yang dikembalikan oleh ASP.NET umumnya Unicode. Jika berbahasa Mandarin Sederhana, maka harus digunakan
// Pengkodean.GetEncoding("GB2312").GetString(responseData)
string srcString = Pengkodean.UTF8.GetString(responseData);
}
tangkap (WebException kami)
{
string pesan = kami.Pesan;
}
Beberapa catatan:
1) srcStrinig adalah HTML halaman yang dikembalikan setelah mengirimkan formulir. Anda dapat menggunakan ekspresi reguler untuk menganalisisnya guna mendapatkan data yang Anda perlukan.
2) Nilai "__VIEWSTATE" dan "__EVENTVALIDATION" tidak statis.
3) Anda juga dapat melihat data POST halaman web melalui beberapa alat, seperti: alat analisis data halaman web HttpWatch, network sniffer, dll.
4) Jika formulir yang dikirimkan memiliki kode verifikasi, maka hal tersebut tidak termasuk dalam cakupan artikel ini.
URL artikel ini: http://www.cnblogs.com/anjou/archive/2006/12/25/602943.html