Skip to content

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 String

Description: 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 String

Example:

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=123

UrlEncode / UrlDecode

GB2312 URL encoding/decoding

vb
Public Function UrlEncode(ByRef strURL As String) As String
Public Function UrlDecode(ByVal url As String) As String

Example:

vb
' GB2312 encoding (for legacy system compatibility)
Dim encoded As String
encoded = VBMAN.ToolsHttp.UrlEncode("Test")
' Result: %B2%E2%CA%D4

AddToQueryString

Add query parameter to URL

vb
Public Function AddToQueryString(ByVal url As String, ByVal QS As String) As String

Example:

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 String

Parameters:

  • Dic - Parameter dictionary
  • IsUrlEncode - 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 Boolean

Example:

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, False

ParseKeyValue

Parse Key:Value format content (such as HTTP Header)

vb
Public Function ParseKeyValue(Content As String, Obj As Scripting.Dictionary) As Boolean

Example:

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 token123

MapMethod / MapMethodName

HTTP method name and index conversion

vb
Public Function MapMethod(Name As String) As Long
Public Function MapMethodName(Index As Long) As String

Example:

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: OPTIONS

ToWwwFormUrlencoded

Convert collection object to Form URL-Encoded format

vb
Public Function ToWwwFormUrlencoded(ByRef Obj As Object, Optional ByVal IsUrlEncode As Boolean = True) As String

Example:

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 Boolean

Example:

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, False

Comprehensive 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 Sub

Example 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 Sub

Example 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 Sub

Example 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 Function

Best Practices

  1. Encoding Consistency: Ensure server and client use the same encoding (UTF-8 recommended)
  2. Parameter Validation: Check if parameters are empty before encoding
  3. URL Length: GET request URL length has limits, use POST for large data
  4. Special Characters: Pay attention to handling &, =, ? and other special characters
  5. Security: Don't put sensitive information in URL parameters

VB6 and LOGO copyright of Microsoft Corporation