Cara Membuat HTTP Server di VB.Net

Pada umumnya jika kita bekerja dengan menggunakan Visual Studio, server yang digunakan adalah IIS atau IIS Express. Tetapi jika kebutuhan anda tidak terlalu rumit anda bisa membuat HTTP Server sederhana di VB.NET.

Untuk membuat HTTP Server sederhana  tersebut anda hanya perlu library kecil yaitu Nhttp server.  Berbekal library tersebut anda bisa membuat server anda running sebagai aplikasi atau bisa juga sebagai Windows Service.

Sebagai Aplikasi

HTTP Server yang running sebagai aplikasi ini mempunyai keuntungan yaitu bisa ada tampilan GUI(Graphical User Interface) nya, tetapi juga mempunyai kelemahan yaitu anda harus login dahulu sebelum menjalankan server.

Adapun langkah pembuatan http server tersebut cukup mudah, tambahkan reference library Nhttp server tersebut ke project VB.Net anda setelah itu anda bisa mengetikkan script seperti berikut:


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        httpserver = New HttpServer
        httpserver.EndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, 8089)
        AddHandler httpserver.RequestReceived, AddressOf RequestReceive
        httpserver.Start()

    End Sub

Anda harus terlebih dahulu mendeklarasikan di bagian private seperti berikut:


   Private httpserver As HttpServer

Dan juga di bagian Import


Imports NHttp

Perhatikan di script AddressOf RequestReceive, script tersebut berfungsi untuk menangani event RequestReceived. Karena itu anda harus membuat method untuk Event tersebut:


Private Sub RequestReceive(sender As Object, e As NHttp.HttpRequestEventArgs)
        Dim imagefile As String = AppDomain.CurrentDomain.BaseDirectory & "0.jpg"
' untuk data berupa teks atau html
        If e.Request.Path = "/" Then
            Dim strtext As String = "hello world"
            e.Response.OutputStream.Write(System.Text.UnicodeEncoding.UTF8.GetBytes(strtext), 0,
                                          Len(strtext))
' untuk data request data berupa gambar
        ElseIf e.Request.Path = "/gambar" Then
            e.Response.ContentType = "image/jpeg"

            Dim bmp As New System.Drawing.Bitmap(imagefile)
            bmp.Save(e.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
'untuk data berupa JSON
        ElseIf e.Request.Path = "/json" Then
            e.Response.ContentType = "application/json"
            Dim jobject As New Linq.JObject
            jobject.Add(New Linq.JProperty("nama", "anas hidayat"))
            e.Response.OutputStream.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(jobject.ToString), 0,
                                          Len(jobject.ToString))
' untuk menangani requst download
        ElseIf e.Request.Path = "/download" Then
            e.Response.ContentType = "application/octet-stream"
            e.Response.Headers.Clear()
            Dim fileinfo As New System.IO.FileInfo(imagefile)

            Dim attachment As String = """" & fileinfo.Name & """"
            Console.WriteLine(attachment)
            e.Response.Headers.Add("Content-Disposition", "attachment;filename=" & attachment)
            Dim bytearray As Byte() = System.IO.File.ReadAllBytes(imagefile)
            e.Response.OutputStream.Write(bytearray, 0, bytearray.Length)

        End If
    End Sub

Catatan: Untuk data json anda bisa merujuk ke artikel cara mengolah data JSON di VB.Net.
Untuk memberhentikan server semisal saat form ditutup anda tinggal mengetikkan script berikut:


  Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
        If httpserver.State = HttpServerState.Started Then
            httpserver.Stop()

        End If
    End Sub

Sebagai Service

Jika anda menginginkan server running sebagai service caranya juga cukup mudah.  Buat project dengan mengklik File->New Project setelah itu pilih Windows Service seperti gambar berikut:

Project Service VB.NETSetelah itu tambahkan reference Nhttp server ke project anda.  Jika sudah ubah property ServiceName pada komponen Service1 seperti berikut:

Change Service Name VB.NetBeri nama service tersebut sesuai yang anda kehendaki.  Nama service ini sangat berguna untuk saat start/stop service dengan command prompt dengan perintah Net start atau net stop.

Jika sudah, klik add installer seperti gambar di atas.  Akan tampil komponen baru yaitu ServiceProcessIntaller dan ServiceInstaller.  Ubah property DisplayName dan Description sesuai keinginan anda.

Setelah itu, pilih komponen ServiceProcessInstaller lalu rubah property account menjadi localservice seperti berikut:

Change Account Service Proess Installer VB.NETSama dengan membuat HTTP server sebagai aplikasi, hanya saja ada sedikit perbedaan yaitu event yang digunakan di mana server HTTP running saat service start dan berhenti saat service stop. Dan berikut script untuk menjalankan dan memberhentikan server HTTP:


 Protected Overrides Sub OnStart(ByVal args() As String)
        ' Add code here to start your service. This method should set things
        ' in motion so your service can do its work.
        httpserver = New HttpServer
        httpserver.EndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, 8089)
        AddHandler httpserver.RequestReceived, AddressOf RequestReceive
        httpserver.Start()
    End Sub

    Protected Overrides Sub OnStop()
        ' Add code here to perform any tear-down necessary to stop your service.
        If httpserver.State = HttpServerState.Started Then
            httpserver.Stop()

        End If
    End Sub

Build Windows service itu seperti biasa. Untuk menginstallnya anda bisa menggunakan tools InstallUtil.exe yang ada di folder Net Framework anda yaitu: C:\Windows\Microsoft.NET\Framework\v4.0.30319.
Untuk menjalankannya, buka cmd.exe sebagai administrator lalu ketik perintah berikut:


Installutil "path file service anda" (harus pakai tanda petik)

Lalu jalankan service dengan mengetikkan


NET START namaservice
Untuk memberhentikannya
NET STOP namaservice

Untuk script lebih lengkap anda bisa download attachment di bawah. Contoh tersebut menggunakan port 8089, jadi pastikan port tersebut tidak digunakan.  Setelah server berjalan anda bisa mengetesnya dengan mengetikkan dibrowser anda alamat berikut:

  1. http://localhost:8089 untuk data teks
  2. http://locahost:8089/gambar untuk data gambar
  3. http://localhost:8089/download untuk download file
  4. http://localhost:8089/json untuk JSON data.

anasmbahdien

Seorang programmer yang menguasai bahasa pemograman Delphi, VB.NET, PHP dan Android. Untuk hasil karya kunjungi mogotekno.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *