ขอ In-Depth ด้วยเรื่องเบาๆล่ะกัน(อ้าว) อันนี้ผมเคยลงใน Blog ของผมนานมากๆแล้วครับ แต่คิดว่ามีประโยชน์และเข้ากับคอนเซปท์ของ In-Depth เลยเอามาลง
คือในหน่วยงานของลูกค้าเ่ก่าของผมนั้น จะมี Applicaion หลายๆตัว เชื่อมต่อกันครับ เขียนด้วยหลายภาษาซะด้วยทั้ง Java,VB.X,C++ และผมก็ได้รับงานให้เขียน VB.NET ไปเรียก Java Servlet ก็เลยค้นๆและวานคนอื่นมาช่วยๆกัน เลยได้มาครับ
Imports System.Collections.Specialized
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_Click(...)
Try
Dim url As String
url = txtUrl.Text '<----- url ของ servlet ครับ
Dim para(3) As String
para(0) = txtSubr.Text.Trim '<------ ค่า parameter
para(1) = txtService.Text.Trim '<------ ค่า parameter
para(2) = txtMess.Text.Trim '<----- ค่า parameter
Dim result As String = PostData(url, para)
txtResult.Text = result '<----- result ที่ได้จาก servlet
Catch ex As Exception
txtResult.Text = ex.Message
End Try
End Sub
Function PostData(ByVal sAddress As String,
ByVal sData() As String) As String
Dim myNameValueCollection As New NameValueCollection
myNameValueCollection.Add("user", sData(0))
myNameValueCollection.Add("service", sData(1))
myNameValueCollection.Add("msg", aesEncrypt(sData(2)))
Dim wUpload As Net.WebClient = New System.Net.WebClient
Dim bResponse As Byte() = wUpload.UploadValues(sAddress, "POST",
myNameValueCollection)
Dim sWebPage As String = Encoding.ASCII.GetChars(bResponse)
Return sWebPage
End Function
End Class
โดย myNameValueCollection ไว้สำหรับเก็บค่าตัวแปรที่จะส่งให้กับ URL ครับ ส่วน myNameValueCollection.Add(XXX,value) นี่คือการกำหนดค่าตัวแปรต่างๆที่จะส่งให้กับ URL
จุดสำคัญคือการใช้ Obj WebClient ครับ และใช่ method UploadValues ส่งตัวแปรห้ดังนี้ (address,method,querycollection) โดย addesss เป็น string url ครับ
ส่วน method ก็คือ "GET"/"POST" นั่นเอง
ส่วน querycollection ก็คือ collection obj ที่ส่งค่าตัวแปรไปนั่นเองโดยต้อง map ชื่อกะค่าให้ตรงกับฝั่ง servlet ด้วยครับ querycollection ที่ผมใช้คือ NameValueCollection ซึ่งต้องการ namespace System.Collections.Specialized ครับ
ว่าแล้วก็จะได้ result ที่ทาง servlet out.print ออกมาครับ(ถ้า servlet set contenttype เป็น html จะมี tag html ติดมาด้วย)
Comments
ขออนุญาตแก้นิดหน่อยนะครับ เรื่องการจัดสี กับขอเอาออกจากหน้าแรกมาไว้หน้า In-Depth เหมือนๆ กันครับ
lewcpe.com, @wasonliw
อ่า จะจัดการสีนี่ทำไงอ่ะคับ? (ว่าจะถามอยู่พอดี)
ใส่แอทริบิวต์เป็นชื่อภาษาครับ อย่าง VB.NET ก็ใช้ lang="vbnet"
lewcpe.com, @wasonliw
ไม่น่าจะตั้งชื่อว่าเรียก Java Servlet นะครับ เพราะจากเท่าที่ดูตัวอย่างคือการใช้เรียก URL ทั่วไปครับ
แต่ว่า URL นั้นมันเป็น Servlet???
น่าจะใส่ try catch ที่ postdata ด้วยนะครับ
แล้วก็ลืมใส่ End Class รึเปล่าคับ??
deans4j,Kerberos มัีนน่าจะเรียก url method ทั่วๆไปได้มั้ง แต่ตอนนั้นทำเรียก Servlet อย่างเดียว chakrit น่าจะใส่แหละ แต่ End Class ตกไปเพราะ copy มาไม่หมด :P