1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hướng dẫn [Ver.13 - 11/11/2017] HttpRequest cho người mới bắt đầu - Ví dụ, hình ảnh, các bước làm chi tiết

Thảo luận trong 'Hướng dẫn - bài tập căn bản' bắt đầu bởi Huân Hoàng, 13/3/16.

  1. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    512
    Đã được thích:
    984
    Chào các bạn, hiện tại UDF _HttpRequest đã được nâng cấp lên phiên bản 12 với nhiều tính năng và hàm mới hỗ trợ tốt hơn cho việc thực hiện request. Toàn bộ bài viết cũ đã bị xoá bỏ, vì chúng đã không còn thích hợp với _HttpRequest các phiên bản sau này, cũng như việc viết bài trên đây thực sự rất rối mắt và khó tham khảo.

    * Kể từ bản 12, bài viết hướng dẫn về request bằng WinHttp mình sẽ cho toàn bộ vào một file Hướng dẫn là _HttpRequest_Help.chm (link tải bên dưới), rất chi tiết, rõ ràng, có thể dễ dàng tham chiếu giữa các nội dung, giúp cho việc học về request được trơn tru hơn.

    * WinHttp trên WinXP không còn support hầu như các trang Https nên UDF chạy tốt nhất từ Win7 trở lên.

    Update lần 13 UDF _httpRequest.au3 (11/11/2017)
    • Lưu ý cho những bạn không đọc kỹ trong file Help (những bạn đã xài UDF này 1 thời gian có thể nó quá quen thuộc rồi nên nhác đọc): Ở bản 12 trở đi, $iReturn=3 sẽ trả về source ở kiểu Binary chứ không phải trả về text như các bản trước nhoé, vui lòng đọc file Help phần $iReturn để hiểu rõ hơn vì nó khác các bản trước khá nhiều chỗ.
    • Update file _HttpRequest_Help.chm.
    • Fix một vài bug + Cải thiện một vài hàm không ổn định.
    Update lần 12 UDF _httpRequest.au3 (17/09/2017)
    • Thêm nhiều hàm mới bổ trợ cho việc thực hiện request.
    • Một số hàm có sự thay đổi về tham số như hàm _GetCookie, _GetLocationRedirect không cần phải điền tham số $sHeader vào nữa, nó sẽ tự động trích Cookies, Redirect Location từ response header mới nhất request được.
    • Thay đổi một số tên hàm cũ như _FileWrite_Test → _HttpRequest_Test... Tuy nhiên sử dụng tên hàm cũ vẫn được nhưng sẽ có thông báo về việc thay đổi tên hàm ở dưới Console của SciTE.
    • Hàm _HttpRequest_CreateDataForm mới giúp cho việc thực hiện request Upload dễ dàng hơn bao giờ hết.
    • Đối với những ai đã code với _HttpRequest các phiên bản cũ trước đây và có dùng đến hàm set Proxy thì nên đọc kỹ file _HttpRequest_Help.chm về hàm _HttpRequest_SetProxy để làm rõ lại cấu trúc của một proxy đã bị hiểu sai.
    • Từ trước đến nay _HttpRequest mặc địnhDisable Redirect. Nó có ưu điểm là dễ đối chiếu với Live HTTP Headers nhưng lại gây hạn chế là khiến phải thực hiện nhiều request hơn. Bắt đầu từ bản 12, mặc định sẽ Enable Redirect, và Response Headers sẽ trả về đầy đủ cả redirect header lẫn header của trang sau khi redirect luôn, như hình bên dưới. Muốn Disable Redirect thì thêm dấu * vào tham số $iReturn của hàm _HttpRequest là được (ngược lại với các phiên bản trước đây).
    [​IMG]


    Update lần 11 UDF _httpRequest.au3 (20/06/2017)
    Update lần 10 UDF _httpRequest.au3 (01/05/2017)
    Update lần 09 UDF _httpRequest.au3 (20/01/2017)
    Update lần 08 UDF _httpRequest.au3 (19/01/2017)
    Update lần 07 UDF _httpRequest.au3 (29/11/2016)
    Update lần 06 UDF _httpRequest.au3 (12/11/2016)
    Update lần 05 UDF _httpRequest.au3 (04/11/2016)




    ------------------BÀI VIẾT------------------

    A/ LỜI NÓI ĐẦU

    - Mình không phải dân lập trình, chỉ là mê AutoIt, tập tành code kiết này nọ nên có thể kiến thức, lý thuyết, cách gọi …trong lập trình của mình không chính xác và chuẩn lắm, mong các bạn thông cảm. :oops:
    - Dùng WinHttp theo mình thì đây là phương thức gửi nhận dữ liệu mạng không cần qua 1 cái Web Browser trung gian. Ví dụ bình thường bạn muốn tải nhạc, bạn vào Chrome, vào ZingMp3, lựa bài muốn tải, bấm Tải về. Còn khi dùng WinHttp, đơn giản, bạn code 1 chương trình gửi 1 thông tin đến ZingMp3 rằng bạn muốn tải bài đó và nhận dữ liệu gửi về, không cần qua một chương trình nào khác nữa.
    - Đây là bài viết dành cho những ai đang mới bắt đầu tìm hiểu về WinHttp, mình thì chỉ nắm những cái gọi là cơ bản thôi, nói chung là vừa đủ xài để ra cái kết quả cuối cùng hay nói nôm na là thực hành nhiều để ra cái kinh nghiệm, chứ về lý thuyết, trả lời các câu hỏi tại sao, vì sao phải làm như vậy thì…mình không biết. :p



    B/ CÁC YÊU CẦU ĐẦU TIÊN

    1- Trong bài hướng dẫn, toàn bộ thông tin gửi nhận request mình dùng addon Live HTTP Headers trên Firefox để xem. Nếu chưa cài bạn có thể vào đây tải về:


    [​IMG]

    • Sau khi cài xong ta vào Tab Config, sau đó tích chọn Exclude URLS with regexp và paste vào ô kế bên nội dung sau:
    Mã (Text):
    ^https://safebrowsing-cache.google.com|^https://scontent-hk|edge-chat.facebook.com|facebook.com/feed/badge/|facebook.com/a/bz$|^https://pixel.facebook.com|.gif$|.jpg$|.ico$|.css$|.js$|.png$|googleads|eclick.vn|doubleclick.net|ants.vn|\.css\?v=|adsplay|google-analytics.com
    • Mục đích của việc trên là để lọc bớt những request thừa, bởi khi chạy Live HTTP Headers sẽ có rất nhiều request hiển thị và rất rối mắt nếu không quen.
    [​IMG]


    2- Tải về UDF _HttpRequest.au3 + Tập tin trợ giúp _HttpRequest Help.chm:
    • Giờ đây tất cả hướng dẫn, mẹo vặt, code... mình đều đã tổng hợp toàn bộ trong file Help này. Hy vọng nó sẽ giúp ích thật nhiều cho các bạn trong việc học về request bằng WinHttp.
    • Link tải:
      Nội dung bị ẩn:
      **Nội dung ẩn: Nội dung của khối ẩn này chỉ có thể được nhìn thấy bởi các thành viên của (các nhóm: nhóm Administrative, Moderating, Registered, Super Modarating, Trial Moderating). **
    • Sửa lỗi mở file Help mà chỉ ra trang trắng không có nội dung: Nhấp phải vào file _HttpRequest_Help.chm, chọn Properties, sau đó tích chọn Unblock, cụ thể sẽ như hình hướng dẫn bên dưới:
    [​IMG]

    3- Cài CallTips cho SciTE: Việc này khá quan trọng bởi vì số lượng hàm là rất nhiều, calltips sẽ giúp ích cho việc code nhanh chóng hơn và không mất nhiều thời gian để nhớ đến tên hàm. Thực hiện cài calltips như sau:
    • Mở file _HttpRequest_Help.chm đã tải ở link trên.
    • Vào mục Introduction.
    • Vào mục CallTips.
    • Làm theo hướng dẫn đã nói rất rõ trong mục CallTips vừa mở.
    [​IMG]


    4- Đọc kỹ hướng dẫn về StringRegExp (tách chuỗi) bởi nó sẽ được sử dụng rất nhiều khi làm về request. Ít nhất phải nắm được căn bản của hàm StringRegExp mới có thể đọc hiểu các ví dụ và thực hành. File _HttpRequest_Help.chm đã có 2 bài viết về StringRegExp, 1 bài đơn giản là do mình viết, một bài là do lazycat (diễn đàn hocautoit.com cũ) viết.

    [​IMG]


    5- Đọc thật kỹ nội dung _HttpRequest_Help.chm về hàm chính _HttpRequest và các tham số của nó điều này hết sức quan trọng vì đây là hàm chủ chốt thực hiện request và liên quan đến tất cả các hàm bổ trợ còn lại của UDF.

    [​IMG]


    ------------------------------------***----------------------------------------
    OK, đó là 5 điều cần làm trước khi đi tiếp vào con đường request rắc rối này.
    File _HttpRequest_Help.chm đã bao gồm:
    • Ví dụ mẫu trong tất cả các hướng dẫn sử dụng các hàm trong UDF.
    • Phần Practice cung cấp những bài tập request từ cơ bản đến phức tạp hơn.

    [​IMG]

    [​IMG]
    Để chạy thử code mẫu, bạn có thể bấm nút Copy To Clipboard như đã thấy ở hình trên rồi paste vào SciTe là xong.




    Các Bài Viết Liên Quan:
    - Phiên bản _HttpRequest dựa trên nền tảng Object Winhttp.WinhttpRequest5.1:
    http://autoitvn.com/threads/_httpre...object-nho-gon-hon-nhanh-hon-v.598/#post-2268
    - Login vào trang không login thuần tuý mà theo kiểu upload: http://autoitvn.com/threads/update-...nh-cac-buoc-lam-chi-tiet.267/page-4#post-2108
    - Tương tác với trang web thông qua API mà trang đó cung cấp:
    http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909
    - Authorization các dịch vụ Google APIs:
    http://autoitvn.com/threads/get-acc...-tuong-tac-google-apis-nhu-gmail-youtube.631/
    - Tương tác với Facebook bằng WinHttp (Tác giả: Nguyễn Quốc Tuấn)
    http://autoitvn.com/threads/tuong-tac-voi-facebook-bang-winhttp.483/

    Video hướng dẫn WinHttp - _HttpRequest của bạn Lê Bá Nghĩa (bắt đầu từ bài 23 trở đi) Click vào để chuyển trang Youtube
    • Lưu ý nhỏ khi xem Video: Vì Video làm khi _HttpRequest ở phiên bản trước ver12 nên có chút khác biệt ở chỗ tham số $iReturn của hàm _HttpRequest có chút thay đổi. Vui lòng xem thêm file Help phần $iReturn kẻo xem Video xong lại làm ra khác nhoé :p
     
  2. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    212
    Đã được thích:
    166
    Tks bác ạ, lại có cài vọc rùi :D
     
  3. shine206

    shine206 Thành viên
    • 13/23

    Tham gia ngày:
    27/9/15
    Bài viết:
    10
    Đã được thích:
    27
    Rất tâm huyết
     
  4. Trường

    Trường Thành viên mới
    • 1/6

    Tham gia ngày:
    16/11/15
    Bài viết:
    4
    Đã được thích:
    6
    Rất dễ hiểu, mong bác sẽ tiếp tục chỉ giáo cho ae :D :D
     
  5. MrTheDzam

    MrTheDzam Thành viên mới
    • 3/6

    Tham gia ngày:
    6/10/15
    Bài viết:
    12
    Đã được thích:
    29
    Nơi ở:
    Bến Tre
    Lót gạch hóng :))
     
    GhostMonster_it and Trường like this.
  6. newbiebabby

    newbiebabby Thành viên mới
    • 1/6

    Tham gia ngày:
    18/4/16
    Bài viết:
    1
    Đã được thích:
    1
    hay nhưng không thông, có clip thì quá good
     
    kamsamita1 thích bài này.
  7. Tran Duy

    Tran Duy Thành viên mới
    • 3/6

    Tham gia ngày:
    26/4/16
    Bài viết:
    26
    Đã được thích:
    10
    kamsamita1 thích bài này.
  8. kakanet

    kakanet Thành viên năng động
    • 43/45

    Tham gia ngày:
    24/2/16
    Bài viết:
    170
    Đã được thích:
    155
    kamsamita1, DoiLangTuNo1 and inxizel like this.
  9. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    225
    Đã được thích:
    631
    Nơi ở:
    Hà Nội
    Bài viết tâm huyết thật đấy
     
    kamsamita1 thích bài này.
  10. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    bác hoàng cho em hỏi với, với mấy trang có https có làm như thế này đc ko ạ, hay phải thêm cái gì nữa ạ
     
    kamsamita1 thích bài này.
  11. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    512
    Đã được thích:
    984
    Vẫn điền vào _HttpRequest như bình thường nhé:

    Code nguồn:
    Local $PortFlag[2][2] = [[80, 443], ['', '8388608']]
    Local $aURL = StringRegExp($URL, '^http(s?)://(.*?)\/(.*?)$', 3)
    If @error Then Return SetError(1)
    Local $SSL = ($aURL[0] ? 1 : 0)
    => tự động check link đầu vào là http hay https rồi :v
     
    kamsamita1 and Khangdx23 like this.
  12. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    bác cho em hỏi ngu phát nữa, nếu post dữ liệu lên kiểu như đăng nhập ý, nó sẽ chuyển mình đến trang home sau đó mình làm ntn hả bác
     
    kamsamita1 thích bài này.
  13. daikupj

    daikupj Thành viên mới
    • 1/6

    Tham gia ngày:
    4/6/16
    Bài viết:
    5
    Đã được thích:
    5
    thi xong sẽ gắng làm một project với cái này :)))
     
    kamsamita1 thích bài này.
  14. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    bác ơi chỗ location xử lí ntn hả bác
     
    kamsamita1 thích bài này.
  15. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    512
    Đã được thích:
    984
    Dùng Regexp để tách ra thým, trong phần <III> Bài 1, xem ở cuối bài có ghi cũng rõ ràng mà :rolleyes:
     
    kamsamita1 thích bài này.
  16. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    Thím cho e xin fb mới :v e hỏi cho dễ với ạ :v
     
    kamsamita1 thích bài này.
  17. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    đại ca cho em hỏi cái, với những trang sau khi login nó chuyển tới trang chờ nó bắt đợi 10s rồi mới hiến lên cái nút, mình bấm nút đó rồi mới vào đc trang home thì làm ntn ạ
     
    kamsamita1 thích bài này.
  18. Anh Dh

    Anh Dh Thành viên mới
    • 1/6

    Tham gia ngày:
    10/1/16
    Bài viết:
    9
    Đã được thích:
    8
    @@như tên gọi của func để chạy file test đó bác
     
    kamsamita1 thích bài này.
  19. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    512
    Đã được thích:
    984
    Update UDF :p:p:p Còn bài viết thì chắc hứng sẽ viết tiếp :v
     
    kamsamita1 and emga9xkc like this.
  20. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    212
    Đã được thích:
    166
    làm sao để có hứng bác ơi
     
    kamsamita1 and Huân Hoàng like this.

Chia sẻ trang này

Đang tải...