ongke0711
Thành viên gắn bó
- Tham gia
- 7/9/06
- Bài viết
- 2,260
- Được thích
- 3,001
- Giới tính
- Nam
Chào các bạn,
Tôi gặp một vấn đề là khi dùng Http request - GET thì nó trả về cái Response nhưng kiểm tra lại thì khác với Response tôi thao tác trực tiếp trên trang web.
- Tìm theo MST, CCCD dùng "https://masothue.com/Ajax/Search/" thì chạy rất nhanh nhưng khi tìm bằng tên thì không chạy.
- Tôi dùng "https://masothue.com/Search/?q" & chuỗi tên thì lại trả về Response sai. Đã thử khai báo các header đúng như trên trình duyệt cũng không sửa được lỗi.
File đính kèm bên dưới. Nhờ các bạn hướng dẫn tìm ra nguyên nhân của vấn đề trên.
Cảm ơn.
Tôi gặp một vấn đề là khi dùng Http request - GET thì nó trả về cái Response nhưng kiểm tra lại thì khác với Response tôi thao tác trực tiếp trên trang web.
- Tìm theo MST, CCCD dùng "https://masothue.com/Ajax/Search/" thì chạy rất nhanh nhưng khi tìm bằng tên thì không chạy.
- Tôi dùng "https://masothue.com/Search/?q" & chuỗi tên thì lại trả về Response sai. Đã thử khai báo các header đúng như trên trình duyệt cũng không sửa được lỗi.
File đính kèm bên dưới. Nhờ các bạn hướng dẫn tìm ra nguyên nhân của vấn đề trên.
Cảm ơn.
Mã:
Dim js As Object
Set js = CreateObject("Scripting.Dictionary")
Dim formData As String, sTenCty As String, res As String
Const url As String = "https://masothue.com/Search/"
res = httpPost("https://masothue.com/Ajax/Token", "")
Set js = JsonConverter.ParseJSON(res)
sTenCty = UCase(Sheet1.Range("A1"))
formData = "?q=" & URLEncode(CStr(sTenCty), True) & "&type=enterpriseName&token=" & js("token") & "&force-search=1"
Debug.Print url & formData
res = httpGet(url & formData)
Debug.Print res
Mã:
Function httpGet$(url$)
'With CreateObject("WinHttp.WinHttpRequest.5.1")
With CreateObject("MSXML2.serverXMLHTTP.6.0")
.Open "GET", url, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51"
.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
.send
httpGet = .responseText
Dim getStatus As String
If Err.Number <> 0 Then
'khong co phan hoi tu server
Else
getStatus = .Status
If getStatus <> "300" And getStatus <> "200" Then
Debug.Print "Some problems raised."
Else
Debug.Print "Connected."
End If
End If
On Error GoTo 0
End With
End Function
File đính kèm
Lần chỉnh sửa cuối: