53 lines
1.8 KiB
Plaintext
53 lines
1.8 KiB
Plaintext
#include once "windows.bi"
|
|
#include once "win/wininet.bi"
|
|
|
|
' Function to check the host certificate for validity
|
|
Function CheckCertificate(hRequest As HINTERNET) As Boolean
|
|
Dim As DWORD dwFlags, dwBuffLen = Sizeof(DWORD)
|
|
If InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, @dwFlags, @dwBuffLen) Then
|
|
If (dwFlags And SECURITY_FLAG_IGNORE_UNKNOWN_CA) = 0 Then Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
' Main program
|
|
Dim As HINTERNET hInternet, hConnect, hRequest
|
|
Dim As String url = "https://www.w3.org/"
|
|
Dim As String buffer
|
|
Dim As DWORD bytesRead
|
|
|
|
hInternet = InternetOpen("FreeBASIC HTTP Request", INTERNET_OPEN_TYPE_DIRECT, null, null, 0)
|
|
If hInternet Then
|
|
hConnect = InternetConnect(hInternet, "www.w3.org", INTERNET_DEFAULT_HTTPS_PORT, null, null, INTERNET_SERVICE_HTTP, 0, 0)
|
|
If hConnect Then
|
|
hRequest = HttpOpenRequest(hConnect, "GET", "/", null, null, null, INTERNET_FLAG_SECURE, 0)
|
|
If hRequest Then
|
|
If HttpSendRequest(hRequest, null, 0, null, 0) Then
|
|
If CheckCertificate(hRequest) Then
|
|
Do
|
|
buffer = Space(1024)
|
|
If InternetReadFile(hRequest, Strptr(buffer), Len(buffer), @bytesRead) = 0 Then Exit Do
|
|
If bytesRead = 0 Then Exit Do
|
|
Print Left(buffer, bytesRead);
|
|
Loop
|
|
Else
|
|
Print "Invalid certificate."
|
|
End If
|
|
Else
|
|
Print "Failed to send request."
|
|
End If
|
|
InternetCloseHandle(hRequest)
|
|
Else
|
|
Print "Failed to open request."
|
|
End If
|
|
InternetCloseHandle(hConnect)
|
|
Else
|
|
Print "Failed to connect."
|
|
End If
|
|
InternetCloseHandle(hInternet)
|
|
Else
|
|
Print "Failed to open internet."
|
|
End If
|
|
|
|
Sleep
|