Mảng chứa Key và Value ta đọc được từ Live HTTP Headers
* Giá trị trả về
·
Chuỗi Form Data chuẩn.
·
Rỗng và set @error nếu lỗi.
* Ghi chú
·
$a_FormItems phải là mảng kiểu:
o
1 chiều được định dạng như sau: ["key1=value1", "key2=value2",...]
o
hoặc 2 chiều được định dạng như sau: [["key1", "value1"], ["key2", "value2"], ...]
·
Khi Value nhìn trên Live HTTP Headers là một tập tin (Value dạng tập tin thường sẽ có 3 phần là: filename=..., Content-Type:... vàmấy ô vuông kỳ quặc- xem hình ví dụ 1 bên dưới sẽ thấy) thì Key ta phải thêm dấu $ đằng trước để phân biệt với cácKey thường, và Value phải là đường dẫn của tập tin đó. Ví dụ:
hoặc Local$FormItems = [["token", "abcxyz"], ["$file", "C:\\Images\Pic.jpg"]]
·
Khi Value là một đoạn text có chứa tiếng Việt (ví dụ khi upload lên trang https://pastebin.com/ chẳng hạn) thì ta phải thêm đằng trước Key dấu ~ để hàm tự động chuyển Unicode sang ANSI trước, thì khi upload thành công sẽ không bị lỗi tiếng Việt. Ví dụ:
o
Local$FormItems = ["~text=upload chuẩn chưa"]
o
hoặc Local$FormItems = [["~text", "upload chuẩn chưa"]
·
Có thể nạp thẳng $a_FormItems vào tham số $sDataToSend của_HttpRequest → Ta có thể bỏ qua bước sử dụng hàm _HttpRequest_CreateDataForm chuyển mảng Data-Form về chuỗi Data-Form.Để hiểu rõ hơn, xem Ví dụ 2 bên dưới.
·
Để hiểu thêm về POST dữ liệu, đọc tài liệu tại đây
* Ví dụ
Ví dụ 1
#include <_HttpRequest.au3>
Local$PathImage = FileOpenDialog('Chọn ảnh', '', 'Image (*.*)') ;chọn 1 ảnh từ máy
If@errorThenExit
Local$aFormItem = ['$source=' &$PathImage] ;hoặc Local $FormItem = [['$source', $PathImage]]
Ở ví dụ 3 ta cần tìm giá trị csrf_token_post để hoàn chỉnh Form-Data. Thông thường để tìm một giá trị lạ ta sẽ tìm giá trị đó trên Live HTTP Headers trước. Nếu tìm không thấy ta sẽ làm 1 request lấy source từ địa chỉ header Referer. Nhìn hình, địa chỉ Referer đó là https://pastebin.com/ → Ta request địa chỉ này và lưu source request được vào Clipboard:
Paste source đã lưu vào Notepad hoặc trang SciTE mới và search thử (Ctrl+F3) giá trị lạ đó (ở ví dụ này là csrf_token_post) có nằm trong source không, nếu có thì dùng StringRegExp để tách lấy nó ra. Ta tìm thử thì quả nhiên là thấy: