Friday, August 05, 2005

Longdo Web Service

ลองทำ Web Service สำหรับ Longdo Dictionary ตอนนี้มีบริการเดียว คือ lookup() โดยมี WSDL อยู่ที่

http://gallery.vuthi.com/ws/Longdo.wsdl

ตัวอย่างการใช้จาก Perl (SOAP::Lite) เปิดดิกในบรรทัดเดียว

perl "-MSOAP::Lite service=>'http://gallery.vuthi.com/ws/Longdo.wsdl'" -le "print lookup('dog');"

ถ้าอยากเปิดหลายๆคำ ก็ต้องเขียนเป็นโปรแกรม เช่น

#!/usr/bin/perl -w
use SOAP::Lite;
my $service = SOAP::Lite
    -> service('http://gallery.vuthi.com/ws/Longdo.wsdl');
print $service->lookup('manual'),"\n";

ยังมีปัญหาเมื่อเรียกใช้จาก Client อื่นๆ เช่น .Net, PHP5 อย่างของ PHP5 เขาบอกว่าทำแบบนี้ได้

$client = new SoapClient( 'http://gallery.vuthi.com/ws/Longdo.wsdl');
echo $client->lookup("automatic"); 
แต่ลองแล้วมัน Error เกี่ยวกับ NameSpace (ns1) ซึ่งไม่รู้เอามาจากไหนเพราะไม่ได้เขียนชื่อนี้ ns1 ไว้ที่ไหนเลย ตกลงบน PHP5 ต้องทำแบบนี้แทน (ไม่ใช้ .wsdl)

$client = new SoapClient(null, array('location' => "http://gallery.vuthi.com/ws/longdo.cgi",
                                    'uri'      => "Longdo"));

มึนแล้ว วันนี้เล่นจาก Perl ไปก่อนละกัน

3 comments:

bact' said...

เหมือน PHP5 นี่ปัญหาเยอะนะเนี่ย -_-"

bact' said...

ลืม ๆ

ขอบคุณสำหรับ web service ครับ
เดี๋ยวใช้แน่ ๆ :D

lulu said...

อยากได้ผลลัพธ์เป็น xml ด้วยอะคร้าบบ :D รอใช้ใน leklekdict อยู่ครับ