Я часто публикую сообщения через PHP CURL. Как правило, мы отправляем сообщения на серверы, которые ожидают прямой HTTP POST или JSON. Итак, мы создаем параметры как массив ... а затем json_encode массив или http_build_query массив ... и отправляем результат в CURLOPT_POSTFIELDS. Кто-то запрограммировал для нас несколько веб-страниц ... и они разместили данные формы через дополнительную страницу, отправив массив $ _POST на наш сервер ... и это сработало! Конечно, достаточно я просмотрел спецификации для CURLOPT_POSTFIELDS ... и он может принимать строку или массив. Итак, я запутался ... почему кажется, что протокол заключается в преобразовании массива в строку с помощью http_build_query, когда можно просто опубликовать массив (по крайней мере, если он одномерный)? Это только из-за побочного преимущества кодирования URL http_build_query .... или есть другая причина?
PS Когда массив содержал параметр, который был полным URL-адресом, то есть с запросом, например http://example.com?a=1&b=2&c=3 сервер прочитал данные нормально, даже если параметр не был закодирован URL ... или отправка массива автоматически urlencode элементов массива?