VBMAN.ToolsHttp - HTTP Tool Object
Overview
VBMAN.ToolsHttp provides HTTP-related utility functions, including URL encoding/decoding, query string processing, content parsing, etc., serving as the foundation for building HTTP clients and servers.
Core Features
- URL Encoding/Decoding: Supports UTF-8 and GB2312 encodings
- Query String Processing: Build and parse URL parameters
- Content Parsing: Parse HTTP request content and Headers
- Format Conversion: Collection objects and Form format conversion
Methods
UrlEncodeUtf8
UTF-8 URL encoding
vb
Public Function UrlEncodeUtf8(ByVal szInput As Variant) As StringDescription: Encodes according to RFC3986 standard, Chinese characters are encoded after converting to UTF-8
Example:
vb
' Chinese encoding
Dim encoded As String
encoded = VBMAN.ToolsHttp.UrlEncodeUtf8("Test")
' Result: %E6%B5%8B%E8%AF%95
' With special characters
encoded = VBMAN.ToolsHttp.UrlEncodeUtf8("Hello World!")
' Result: Hello%20%E4%B8%96%E7%95%8C%21
' Complete URL building
Dim url As String
url = "https://api.example.com/search?q=" & VBMAN.ToolsHttp.UrlEncodeUtf8(TextSearch.Text)UrlDecodeUtf8
UTF-8 URL decoding
vb
Public Function UrlDecodeUtf8(ByVal url As String) As StringExample:
vb
' Decode
Dim decoded As String
decoded = VBMAN.ToolsHttp.UrlDecodeUtf8("%E6%B5%8B%E8%AF%95")
' Result: Test
' Process complete URL
Dim fullUrl As String
fullUrl = "POST /api/%E6%B5%8B%E8%AF%95%20%E7%9A%84/c?d=123"
decoded = VBMAN.ToolsHttp.UrlDecodeUtf8(fullUrl)
' Result: POST /api/Test of/c?d=123UrlEncode / UrlDecode
GB2312 URL encoding/decoding
vb
Public Function UrlEncode(ByRef strURL As String) As String
Public Function UrlDecode(ByVal url As String) As StringExample:
vb
' GB2312 encoding (for legacy system compatibility)
Dim encoded As String
encoded = VBMAN.ToolsHttp.UrlEncode("Test")
' Result: %B2%E2%CA%D4AddToQueryString
Add query parameter to URL
vb
Public Function AddToQueryString(ByVal url As String, ByVal QS As String) As StringExample:
vb
' Add parameter to URL with existing query string
Dim url1 As String
url1 = VBMAN.ToolsHttp.AddToQueryString("http://api.com/search?q=test", "page=2")
' Result: http://api.com/search?q=test&page=2
' Add to URL without parameters
Dim url2 As String
url2 = VBMAN.ToolsHttp.AddToQueryString("http://api.com/users", "id=123")
' Result: http://api.com/users?id=123
' Chain addition
Dim url3 As String
url3 = "http://api.com/search"
url3 = VBMAN.ToolsHttp.AddToQueryString(url3, "q=" & VBMAN.ToolsHttp.UrlEncodeUtf8("Search"))
url3 = VBMAN.ToolsHttp.AddToQueryString(url3, "page=1")
url3 = VBMAN.ToolsHttp.AddToQueryString(url3, "size=20")MakeContent
Convert dictionary to query string
vb
Public Function MakeContent(Dic As Scripting.Dictionary, Optional IsUrlEncode As Boolean = True) As StringParameters:
Dic- Parameter dictionaryIsUrlEncode- Whether to URL encode values (default True)
Example:
vb
' Build POST data
Dim params As New Scripting.Dictionary
params("username") = "admin"
params("password") = "123456"
params("remember") = "true"
Dim postData As String
postData = VBMAN.ToolsHttp.MakeContent(params)
' Result: username=admin&password=123456&remember=true
' Non-encoded version
Dim postDataRaw As String
postDataRaw = VBMAN.ToolsHttp.MakeContent(params, False)ParseContent
Parse query string to dictionary
vb
Public Function ParseContent(Content As String, Obj As Scripting.Dictionary, Optional IsUrlDecode As Boolean = True) As BooleanExample:
vb
' Parse URL parameters
Dim queryString As String
queryString = "name=%E5%BC%A0%E4%B8%89&age=25&city=%E5%8C%97%E4%BA%AC"
Dim params As New Scripting.Dictionary
VBMAN.ToolsHttp.ParseContent queryString, params
Debug.Print params("name") ' Zhang San
Debug.Print params("age") ' 25
Debug.Print params("city") ' Beijing
' Parse POST data
Dim postData As String
postData = "username=admin&password=secret&action=login"
Dim formData As New Scripting.Dictionary
VBMAN.ToolsHttp.ParseContent postData, formData, FalseParseKeyValue
Parse Key:Value format content (such as HTTP Header)
vb
Public Function ParseKeyValue(Content As String, Obj As Scripting.Dictionary) As BooleanExample:
vb
' Parse HTTP Header
Dim headers As String
headers = "Content-Type: application/json" & vbCrLf & _
"Authorization: Bearer token123" & vbCrLf & _
"Accept: */*"
Dim headerDic As New Scripting.Dictionary
VBMAN.ToolsHttp.ParseKeyValue headers, headerDic
Debug.Print headerDic("Content-Type") ' application/json
Debug.Print headerDic("Authorization") ' Bearer token123MapMethod / MapMethodName
HTTP method name and index conversion
vb
Public Function MapMethod(Name As String) As Long
Public Function MapMethodName(Index As Long) As StringExample:
vb
' Method name to index
Dim methodIndex As Long
methodIndex = VBMAN.ToolsHttp.MapMethod("POST") ' Result: 1
methodIndex = VBMAN.ToolsHttp.MapMethod("GET") ' Result: 2
' Index to method name
Dim methodName As String
methodName = VBMAN.ToolsHttp.MapMethodName(1) ' Result: POST
methodName = VBMAN.ToolsHttp.MapMethodName(2) ' Result: GET
' Supported mappings
' 0: ANY, 1: POST, 2: GET, 3: PUT, 4: DELETE, 5: OPTIONSToWwwFormUrlencoded
Convert collection object to Form URL-Encoded format
vb
Public Function ToWwwFormUrlencoded(ByRef Obj As Object, Optional ByVal IsUrlEncode As Boolean = True) As StringExample:
vb
' Using cCollection
Dim coll As New cCollection
coll("name") = "Zhang San"
coll("age") = "25"
Dim formData As String
formData = VBMAN.ToolsHttp.ToWwwFormUrlencoded(coll)
' Result: name=%E5%BC%A0%E4%B8%89&age=25
' Using Dictionary
Dim dic As New Scripting.Dictionary
dic("key1") = "value1"
dic("key2") = "value2"
Dim encoded As String
encoded = VBMAN.ToolsHttp.ToWwwFormUrlencoded(dic, True)FromWwwFormUrlencoded
Parse Form URL-Encoded format to collection object
vb
Public Function FromWwwFormUrlencoded(ByVal Content As String, ByRef Obj As Object, Optional ByVal IsUrlDecode As Boolean = True) As BooleanExample:
vb
' Parse to cCollection
Dim coll As New cCollection
VBMAN.ToolsHttp.FromWwwFormUrlencoded "name=%E5%BC%A0%E4%B8%89&age=25", coll
Debug.Print coll("name") ' Zhang San
Debug.Print coll("age") ' 25
' Parse to Dictionary
Dim dic As New Scripting.Dictionary
VBMAN.ToolsHttp.FromWwwFormUrlencoded "key1=value1&key2=value2", dic, FalseComprehensive Examples
Example 1: Build URL with Parameters
vb
Private Function BuildSearchUrl(baseUrl As String, keyword As String, page As Integer, pageSize As Integer) As String
Dim url As String
url = baseUrl
' Add query parameters
url = VBMAN.ToolsHttp.AddToQueryString(url, "q=" & VBMAN.ToolsHttp.UrlEncodeUtf8(keyword))
url = VBMAN.ToolsHttp.AddToQueryString(url, "page=" & page)
url = VBMAN.ToolsHttp.AddToQueryString(url, "size=" & pageSize)
BuildSearchUrl = url
End Function
Private Sub TestBuildUrl()
Dim url As String
url = BuildSearchUrl("https://api.example.com/search", "VB6 Programming", 1, 20)
Debug.Print url
' Result: https://api.example.com/search?q=VB6%20Programming&page=1&size=20
End SubExample 2: Process HTTP Request
vb
Private Sub HandleHttpRequest(requestData As String)
' Parse request line and Header
Dim lines() As String
lines = Split(requestData, vbCrLf)
' First line is request line
Dim requestLine As String
requestLine = lines(0)
Debug.Print "Request: " & requestLine
' Parse Header
Dim headers As New Scripting.Dictionary
Dim i As Integer
For i = 1 To UBound(lines)
If lines(i) = "" Then Exit For ' Header ends
VBMAN.ToolsHttp.ParseKeyValue lines(i), headers
Next i
Debug.Print "Content-Type: " & headers("Content-Type")
End SubExample 3: Form Data Processing
vb
Private Sub ProcessFormSubmit()
' Simulate form data
Dim formData As String
formData = "username=admin&password=secret&remember=true"
' Parse
Dim params As New Scripting.Dictionary
VBMAN.ToolsHttp.ParseContent formData, params, False
' Process login
If Login(params("username"), params("password")) Then
Debug.Print "Login successful"
Else
Debug.Print "Login failed"
End If
End SubExample 4: API Client Request Building
vb
Private Function BuildApiRequest(endpoint As String, method As String, params As Scripting.Dictionary) As String
Dim request As String
' Build request line
Dim methodIndex As Long
methodIndex = VBMAN.ToolsHttp.MapMethod(UCase(method))
If methodIndex = 2 Then ' GET
' GET request parameters in URL
Dim queryString As String
queryString = VBMAN.ToolsHttp.MakeContent(params)
request = "GET " & endpoint & "?" & queryString & " HTTP/1.1" & vbCrLf
Else
' POST/PUT etc. parameters in Body
request = method & " " & endpoint & " HTTP/1.1" & vbCrLf
request = request & "Content-Type: application/x-www-form-urlencoded" & vbCrLf
request = request & vbCrLf
request = request & VBMAN.ToolsHttp.MakeContent(params)
End If
BuildApiRequest = request
End FunctionBest Practices
- Encoding Consistency: Ensure server and client use the same encoding (UTF-8 recommended)
- Parameter Validation: Check if parameters are empty before encoding
- URL Length: GET request URL length has limits, use POST for large data
- Special Characters: Pay attention to handling
&,=,?and other special characters - Security: Don't put sensitive information in URL parameters