Thứ Tư, 2 tháng 3, 2011

Using Nusoap with PHP

Lâu lắm rồi ko có j` nổi bật trong công việc để viết bài :D
Hôm nay, bài toán tôi cần giải quyết là lấy dữ liệu từ các sàn giao dịch Chứng Khoán.
Mọi vẫn đề đều được giải quyết, đến khi tôi gặp site này : http://www.hsx.vn/hsx/HOSE_Livesecurity.htm
Ở đây, dữ liệu được load ra bằng ajax, như vậy nếu dùng file_get_contents() thì sẽ ko thể lấy được gì.
Sau 1 hồi mò mẫm thì ra cái service này, http://www.hsx.vn/LS_VSE/HoSTC_Service.asmx
Các function để site load dữ liệu ra đều ở đây cả.
=> vấn đề bây giờ là phải tạo 1 Soap Client để làm việc với service, và tôi chọn Nusoap.
- Download lib tại đây : http://sourceforge.net/projects/nusoap/
- Download file này : http://www.hsx.vn/LS_VSE/GetDataProxy.aspx?service=HoSTC_Service.asmx

Ở trong file GetDataProxy.aspx có các function cần dùng, gồm các param, title ....
Cái tôi quan tâm là function GetLiveSecurity() và param f_time.

Trong code php, ta làm như sau:


require_once('lib/nusoap.php');
$client = new nusoap_client('http://www.hsx.vn/LS_VSE/HoSTC_Service.asmx?WSDL', true);
$result = $client->call('GetLiveSecurity',array('f_time'=>'true'));
var_dump($result);
?>


vậy là tôi đã có đầy đủ dữ liệu được site load ra, bây giờ việc còn lại là chặt chém cái $result ra, muốn lấy j` thì lấy \:d/

Bài toán của tôi chỉ cần có vậy, nếu của bạn phức tạp hơn, cần nhiều hơn thì tham khảo thêm nhé.
Link tham khảo: http://www.slideshare.net/fulvio.corno/web-services-in-php-using-the-nusoap-library

12 nhận xét:

  1. sao phức tạp vậy,mở firebug ra tìm cái link load ajax của nó,rồi file_get_content cái link đó là xơi được hết :D.

    Trả lờiXóa
  2. nếu file_get_content được thì bài viết này nên xóa đi.

    Trả lờiXóa
  3. Làm kiểu này, dữ liệu trả về dễ chặt chém hơn là dùng file_get_content chứ.

    Thanks cậu.

    Trả lờiXóa
  4. @levinh: cái này thì tùy vào service mình lấy bạn ạ, ở đây thì nó trả về cho mình:
    AAA|1|2|3|4|....**AAM|1|2|3|4|.....

    Note: Điều kiện ở đây là website bạn lấy có xây dựng 1 service.

    Trả lờiXóa
  5. Bài tổng hợp rất hay! Good job little boy ^^ !

    Trả lờiXóa
  6. Nếu dùng web service thì sẽ tiện hơn cho các hệ thống lớn, các hệ thống sử dụng chứng thực vấn đề từ nhiều server ... nhìn chung sẽ tiện hơn là dùng file_get_content.

    Trả lờiXóa
  7. Bài viết rất bổ ích, thegioilaptrinh thank nhiều nhé,

    Trả lờiXóa
  8. Nếu muốn lấy từ site khác cũng load data bằng ajax thì chổ

    $result = $client->call('GetLiveSecurity',array('f_time'=>'true'));

    Sẽ thay như thế nào ?

    Trả lờiXóa
  9. @vietob: GetLiveSecurity = function()
    array(‘f_time’=>’true’) = tham số truyền vào.

    Trả lờiXóa
  10. Mình vẫn chưa get được table lên từ service, bạn có thể hướng dẫn cách truyền tham số với hàm không? Chỉ get được các mã chứng khoán bị cảnh báo thôi.

    Trả lờiXóa
  11. r7fidc dpzqiukobicm, [url=http://tiinnzreuxmw.com/]tiinnzreuxmw[/url], [link=http://tgjftqjasgwi.com/]tgjftqjasgwi[/link], http://jzkkynikqxkr.com/

    Trả lờiXóa
  12. 9c5qyW kveuwknhvpru, [url=http://udvsxlddwiju.com/]udvsxlddwiju[/url], [link=http://vswsqgxefqhk.com/]vswsqgxefqhk[/link], http://gpmadhdqoigu.com/

    Trả lờiXóa