30/09/2018, 18:49

Có 1 trang web abc.com , trang web này mình k biết api. Làm thế nào để app của mình kết nối được đến đó và lấy dữ liệu về, trong khi không biết api của nó?

Mình đang định làm 1 app android liên quan đến việc kết nối đến sever bên trên. VD : Có 1 trang web abc.com , trang web này mình k biết api. Làm thế nào để app của mình kết nối được đến đó và lấy dữ liệu về, trong khi không biết api của nó?
Làm thế nào để biết được trang abc.com nó trả về kiểu json hay xml và nó bao gồm những thành phần gì?
Mình cảm ơn!

caybang viết 20:53 ngày 30/09/2018

đó là web service.
tùy vào dự án có những API nào thì tùy thuộc,
ví dụ: abc.com của bạn thì bạn viết hoặc ai đó viết cùng hợp tác làm app với bạn thì mới biết được nó cần gì và trả về gì. đơn giản như API login đi :
abc.com/login&user = ?&pass= ?
giá trị trả về
> json : {

>                                 "login" :"true"
>                                  "id" : "1"
>                                  "avatar ": "http://link anh gi do "
>                               }

nhận giá trị trả về là “true” tức là login thành công.

cái này tùy thuộc vào ngữ cảnh mà bạn làm.

tool check nhanh cho mình ở trên web google : postman rest client shortcut.

Dương Nguyễn Văn viết 21:03 ngày 30/09/2018

Đó. Vấn đề là mình k biết api trả về. Làm thế nào để xem. Một trang web giả sử youtube, dantri, tinhte,daynhauhoc trả về cái gì và nội dung bao gồm cai gì ạ?

caybang viết 20:53 ngày 30/09/2018

mấy cái web đó bạn chỉ lấy RSS của họ chứ đâu phải là web service.
ví dụ :
http://vnexpress.net/rss
http://dantri.com.vn/rss.htm

Dương Nguyễn Văn viết 20:56 ngày 30/09/2018

Ủa. Vậy mình muốn lấy các text trong 1 bài báo thì phải làm sao. Mình tưởng nó tra về 1 ob json. Trong đó có thuộc tính bao gồm nội dung bài báo

TTmagic viết 21:00 ngày 30/09/2018

bạn nghiên cứu Jsoup nhé
app này mình làm bằng jsoup này
Còn những web nào hỗ trợ hoặc web của bạn thì có thể dùng json được, ví dụ dạy nhau học này http://daynhauhoc.com/latest.json

caybang viết 21:00 ngày 30/09/2018

nó trả về XML

vi.wikipedia.org

XML

XML (viết tắt từ tiếng Anh: eXtensible Markup Language, tức "Ngôn ngữ đánh dấu mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet. Các ngôn ngữ dựa trên XML (Ví dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩ...

http://www.tutorialspoint.com/android/android_xml_parsers.htm

Thành Phạm viết 21:02 ngày 30/09/2018

Bạn ấn F12 xong bật tab network lên để theo dõi các gói tin được trao đổi qua lại và xem xem dữ liệu dạng gì để tìm cách bắt ngon thì được json xml mà đen thì phải dùng jsoup để tách dữ liệu từ html như của anh @TTmagic gợi ý

Huy Le viết 20:49 ngày 30/09/2018

Có 1 kỹ thuật là scan nội dung html của trang web đó, sau đó lọc ra các thông tin cần thiết, đó là cách mà Google, Baomoi, cách trang tin tổng hợp dùng.

Phan Hoàng viết 20:55 ngày 30/09/2018

Có 1 số hướng giải quyết như sau:
1- Tìm xem trang đó có app mobile không? Sau đó cài lên và dùng phần mềm nghe lén (sniff) để bắt các gói tin. May mắn nếu các gói tin này không mã hóa (dùng http) thì bạn có thể xem request, response của nó mà dùng. Nói chung, cứ lần lần dần dần thì sẽ ra. Đây là cách mà mình cũng đã làm thử với một vài trang web xem phim. (tuy nhiên nếu không may họ dùng https, hoặc cài token key cho app thì … hết phim)

  1. Cách nữa có lẽ hay hơn là xin/mua API đó. Ví dụ như mp3.zing.vn, bạn có thể viết mail xin được.

  2. Bóc tách trang web của nó. Cái này có thể làm dưới client (ví dụ bạn dùng jsoup bóc tách và hiển thị luôn trên app). Tuy nhiên, nhược điểm là app tốn băng thông vì phải download cả file html, nặng vì phải thực hiện thao tác bóc tách).

  • Tuy nhiên, cách làm hay hơn là bạn bóc tách phía server (viết crawler) rồi lưu vào CSDL của riêng bạn (dùng ngôn ngữ nào cũng ok). Sau đó viết webservice cho app mobile của bạn, vừa chủ động, vừa nhanh và đỡ tốn băng thông cho app.
Nguyễn Minh Hải viết 20:51 ngày 30/09/2018

Có 1 kỹ thuật là scan nội dung html của trang web đó, sau đó lọc ra các thông tin cần thiết, đó là cách mà Google, Baomoi, cách trang tin tổng hợp dùng.

Kỹ thuật đó có vẻ là dùng HtmlAgilityPack để lấy nội dung website ra có phải không nhỉ?

Nguyễn Minh Hải viết 20:52 ngày 30/09/2018

Đó. Vấn đề là mình k biết api trả về. Làm thế nào để xem. Một trang web giả sử youtube, dantri, tinhte,daynhauhoc trả về cái gì và nội dung bao gồm cai gì ạ?

Bạn đăng ký thử một tài khoản của http://thinkspeak.com
Và nghiên cứu nó thử?
Có API để nhận dữ liệu và có API để lấy dữ liệu ( trả về 1 ob Json)

Dương Nguyễn Văn viết 20:51 ngày 30/09/2018

tên trang web có đúng không bạn. mình không vào được

Nguyễn Minh Hải viết 20:59 ngày 30/09/2018

Vào lại nha: https://thingspeak.com/

Dương Nguyễn Văn viết 20:58 ngày 30/09/2018

trang web này nó để làm gi vậy ạ. Hồi chiều mình cũng có search qua mà không rõ lắm

Nguyễn Văn Toàn viết 21:00 ngày 30/09/2018

chào a. a có thể nói rõ cho e cách 3 được k ak. hiện tại e đang sử dụng cách 2 như a nói nhưng thời gian để load lâu quá. mà e thấy cách 3 a nói rất hay nhưng e vẫn chưa hiểu rõ cách chuyển khai

Phan Hoàng viết 20:59 ngày 30/09/2018

Cách 3 giống cách 2 mà bạn, thay vì dùng jsoup bóc tách dữ liệu trên phone, bạn dùng jsoup bóc tách dữ liệu này trên server. Sau khi bóc tách (parser) xong, bạn lưu nó vào CSDL của mình trên server.

Sau đó bạn viết một webservice (hoặc cài đặt) để nó giao tiếp với phone.

Bài liên quan
0