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!
Bài liên quan
đó 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 : {
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.
Đó. 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ì ạ?
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
Ủ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
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
nó trả về XML
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
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 ý
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.
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)
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.
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).
Kỹ thuật đó có vẻ là dùng HtmlAgilityPack để lấy nội dung website ra có phải không nhỉ?
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)
tên trang web có đúng không bạn. mình không vào được
Vào lại nha: https://thingspeak.com/
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
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
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.