มารู้จัก Web Services v.2

Posted 20/12/2009 22:42 by pandula

สำหรับ version นี้ จะเป็นภาคปฏิบัติครับ สำหรับการใช้งาน Web Service ซึ่งเป็นในภาคทฤษฏีได้เขียนไว้ใน มารู้จัก Web Service v.1 ไปแล้วนั่นเองครับ

โดยในบทความนี้ เราจะมาสร้าง Web Service ง่ายๆ และจะเขียนโปรแกรมให้ PPC เรียกใช้งาน Web Service ของเราครับ

มาเริ่มสร้าง Provider กันเลย.

เราจะเริ่มต้นด้วยการสร้าง Web Service Application ครับ

WS

เมื่อเปิด visual studio ขึ้นมา ก็ให้ File > New Project ขึ้นมาครับ เลือกเป็น ASP.NET Web Sevice Application ครับ

WS1

ในไฟล์ Service1.asmx.cs จะมีโค้ดที่ vs สร้างให้เป็น default ครับเพื่อแสดงความเป็น Web Service โดยประเด็นสำคัญจะอยู่ที่

[WebMethod]

public string HelloWorld(){

}

โดย [WebMethod] จะเป็นการประกาศว่า HelloWorld() เป็น WebMethod ของ Web Service ของเราครับ ถ้าเราไม่มี [WebMethod] เขียนกำกับไว้ WSDL ก็จะไม่รู้จักเมธอด HelloWorld() ของเรานั่นเองครับ

ต่อไป ให้เราสร้าง WebMethod ขึ้นมาใหม่ชื่อ Add รับพารามิเตอร์ 2 ตัวเป็นชนิด int คือ a กับ b แบบนี้ครับ

add

จากนั้นเราก็จัดการ Publish WebService ของเราขึ้น IIS ครับ โดยคลิกขวาที่ชื่อ Project ของเราแล้วเลือก Publish

pub

จากนั้นก็ตั้ง location ให้กับ Web Service ครับ ในที่นี้ผมตั้งไว้ที่ http://localhost/iPandulaWS

pub1 

เท่านี้ Web Service Application ของเราก็จะรันอยู่บน IIS พร้อมให้เราใช้งานแล้วครับ โดยสามารถทดสอบการใช้งานก่อนผ่าน Web Browser โดยให้เรียกไปที่ Location ที่เราตั้งไว้ครับ

สร้าง Requester กันต่อเลย.

ขั้นนี้ เราจะมาเรียกใช้งาน WebService ที่ได้สร้างไปแล้วข้างต้นครับ ดังนี้

เริ่มจาก New Project ขึ้นมาใหม่ เป็น Smart Device ครับ

wm

เลือกรุ่นของ Windows Mobile ครับ ในที่นี้ผมเลือกเป็น v. 6 Profession.

wm1

ออกแบบ interface แบบนี้ครับ

form

ที่ Solotion ให้ทำการคลิกขวาที่ References แล้ว Add Web Reference ดังภาพ

addref

จะเข้าสู่การ Add Web Reference โดยให้เราระบุ URL: ของ Web Service ที่เราสร้างไว้ก่อนหน้านี้ครับ

addref1

ในที่นี้ของผมจะอยู่ที่ http://ชื่อเครื่อง/iPandulaWS/Service1.asmx  โดยจากภาพที่ให้เปลี่ยนจาก http://localhost ให้เป็น http://ชื่อเครื่อง ด้วยนะครับเพราะ Windows Mobile จะไม่รู้จัก localhost นั่นเองครับ แล้วกด Go ครับ ก็จะแสดง WebMethod ที่มีออกมา

ในส่วนทางขวา จะแบ่งเป็น 2 ส่วนคือ

1. Web services found . เพื่อแสดงว่าพบ Service จำนวนเท่าไร

2. Web reference name. ซึ่งเราจะนำชื่อนี้ไปเรียกใช้ Service นี้ต่อไปครับ

addref2

เมื่อเราทำการ Add Reference เสร็จเรียบร้อยต่อไปก็ถึงขั้นตอนการเรียกใช้ครับ

ให้เราดับเบิ้ลคลิกที่ Button และเขียนโค้ดนี้ลงไปครับ

addbutton

สำหรับจุดสำคัญที่ต้องรู้ในโค้ดนี้ มี 2 บรรทัดครับคือ

localhost.Service1 s = new localhost.Service1();

ซึ่งเป็นการสร้าง object ชื่อ s ขึ้นจาก localhost.Service1();

ที่เป็นชื่อ localhost.Service1 ก็เนื่องมาจาก Web reference name ผมได้ตั้งชื่อไว้ว่า localhost นั่นเองครับ และอีกบรรทัดคือ

s.Add( a , b );

ซึ่งเป็นการเรียกใช้เมธอดชื่อ Add ที่เราเขียนไว้ที่ Web Service นั่นเองครับ

สุดท้าย ท้ายสุดครับ ให้เรา Sync Windows Mobile ของเราเข้ากับ PC ให้เรียบร้อย ใครใช้ Emu ก็ Sync Emu และ Setting Connection ให้เรียบร้อยนะครับ จากนั้นก็กดปุ่มรันได้เลยครับ

res

เพียงเท่านี้ WindowsMobile ของเรา ก็จะบวกเลขผ่าน WebService ได้แล้วครับ *0*

แต่เอ…  แค่บวกเลขทำไมต้องผ่านเว็บเซอร์วิสด้วยล่ะนี้ ช้าจะตาย ฮ่าๆ

About pandula

iPandula.net iPandula : Dev, is mind.

ร่วมให้กำลังใจนักเขียน

อ่านแล้วชอบใจ อยากให้กำลังใจกับผู้แต่งบทความนี้ ขอเชิญร่วมให้กำลังใจผ่าน Paysbuy/Paypal นะครับ ปลอดภัยเพราะทำงานผ่าน SSL และไม่มีค่าใช้จ่ายเพิ่มเติมครับ เว็บเราให้นักเขียน 100% ครับ

Comment ระบบเก่า

 

nantcom said:

เหอๆ แจ่มครับ

ถ้างั้น ลองเปลี่ยนเป็นยกกำลัง หรือหาค่า Pi ตัวที่ 1.6 ล้าน อาจจะคุ้มค่ามากขึ้นครับ คริๆ

December 21, 2009 12:33 AM
 

aui said:

พอดี ลองทำดูแล้วค่ะ  แต่ว่ามันมี  error  Unable to connect to the remote server ไม่ทราบวาเกี่ยวกับอะไรหรอค่ะ

December 25, 2009 7:53 PM
 

pandula said:

เป็นเพราะ Emulator ยังไม่สามารถเชื่อมต่อเข้า Web Service ได้ครับ ทดสอบ emulator ว่าเรียกเว็บเซอร์วิสเจอหรือไม่ครับ

ให้ดู 2 เรื่องนี้ก่อนนะครับ

1. Web Refference ต้องอ้างอิงไปที่ http://ชื่อเครื่อง/ นะครับ ไม่ใช่ localhost

2. setting connection ใน emulator ใหม่ครับ แล้วทดสอบเรียกเว็บเซอวิสอีกครับ

อ่อสุดท้าย เวลาถาม ตั้งกระทู้น่าจะได้คำตอบเร็วกว่าครับผม ^^"

December 25, 2009 8:20 PM
 

aui said:

แต่ว่าเมื่อ ทดสอบผ่านemulatorแล้วก็สามารถรัน web service ได้ ค่ะ  แต่พอกด add ก็มีerrorขึ้นมาตามที่บอกอ่ะ

December 25, 2009 10:39 PM
 

pandula said:

ถ้าเป็นอย่างนั้น ลองเเก้ไข path ของ webservice ใน project mobile เราอีกทีครับ

เมื่อแก้ไขเสร็จให้กด Update Web reference โดยการคลิกขวาที่Web reference ในโปรเจค mobile ของเราครับ

December 29, 2009 7:15 PM
 

Pongthep Sripromma said:

สุดยอดเลยครับ พี่

January 10, 2010 12:49 AM
 

pencil said:

ขอตัวอย่างที่ไม่คล้าย web app ครับ ยังงงๆ

August 30, 2010 8:22 AM
 

ITP said:

ผ่านแล้ว ขอบคุณครับ

January 8, 2011 3:31 PM
 

TualekZ said:

พอลองเข้า http://localhost/WebService1 ตามที่ publish ไว้อะค่ะ มันก็ขึ้นว่า

HTTP Error 404.0 - Not Found

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

ทำไมอะค่ะ

March 24, 2011 10:23 AM
 

Niracha said:

ถ้าเจอ error แบบนี้ต้องทำยังไงบ้างอ่ะค่ะ reference service จาก www.pttplc.com/pttinfo.asmx อ่ะค่ะ ??

"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or  ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."

April 18, 2012 4:07 PM
 

pan said:

ถ้าใช้เครื่องจริงก็ทำแบบเดียวกันนี้เลยใช่ไหมครับ แล้วเวลาเรียกใช้ต้องเรียกใช้ผ่านอะไรครับ

May 2, 2012 2:28 AM
(required)  
(optional)
(required)  
Add

DisQUS Comment (ยังเอ๋อๆ อยู่)

blog comments powered by Disqus