How can URL-encoded parameters be passed in an HTTPS request using fsockopen?

When making an HTTPS request using fsockopen in PHP, URL-encoded parameters can be passed by constructing the query string and including it in the request headers. The query string should be properly encoded using urlencode() function to ensure special characters are correctly handled. This allows the server to parse the parameters correctly.

<?php
$host = 'example.com';
$port = 443;
$path = '/api';
$params = array(
    'param1' => 'value1',
    'param2' => 'value2'
);
$queryString = http_build_query($params);

$request = "GET $path?$queryString HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
$request .= "Connection: close\r\n\r\n";

$fp = fsockopen('ssl://' . $host, $port, $errno, $errstr, 30);
if (!$fp) {
    echo "Error: $errstr ($errno)\n";
} else {
    fwrite($fp, $request);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>