Получение контента из PHP: проблема с POST и запросом

Извиняюсь за мой самый длинный вопрос о SO. Я пытаюсь взаимодействовать с интерфейсом php для базы данных mysql в ROOT (фреймворк CERN на C++ для анализа физики высоких энергий). Для начала я попытался заставить этот php-интерфейс хорошо работать с wget и curl, потому что я лучше знаком с ними. Работает следующая команда:

wget --post-data "hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases;" http://some.host.edu/log/log_query_matlab.php

Результаты:

database1

database2

Это хорошо. Если я пропущу --post-data, я получу результат:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 6
i'm dead! Access denied for user 'admin'@'localhost' (using password: NO) 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 29

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /log/log_query_matlab.php on line 29

У меня есть доступ к php-скрипту (только для чтения), но сама ошибка не так важна. Какое значение имеет то, что, используя ROOT, я использую функцию, называемую socket.SendRaw(message, message.Length()) (сокет - это TSocket), и это дает мне ту же «ошибку», что и wget, без переключателя данных поста, если мое «сообщение»

"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"

Это может быть напрасно, но кто-нибудь знает, как я должен форматировать «сообщение», которое включает что-то, что эквивалентно переключателю --post-data. Или есть стандартный способ форматирования POST-запросов в одну строку (я видел множественный -line материал. Верно?) Извините, я ничего не понимаю!

PS. Запрос mysql - show databases, но пробел был заменен на _spazio_, что по-итальянски означает пробел. Это требует автор интерфейса db и php (и различные замены для символов), но кто-нибудь видел это раньше? Попытка устранить неполадки была ужасной!


person physicsmichael    schedule 08.04.2010    source источник
comment
похоже, что ваш вопрос не связан с mysql, php или заголовком. Его можно сократить до того, как отправить HTTP-запрос POST с использованием ROOT-фреймворка (или как найти способ выполнить утилиту командной строки с помощью этого фреймворка), верно?   -  person Your Common Sense    schedule 08.04.2010
comment
Я так полагаю. Это также может быть как отправить HTTP-запрос POST в один лайнер. Поскольку ROOT — это C++, возможно, для реализации SendRaw используется библиотека C++. Существует ли общий формат С++ для отправки HTTP-запросов? На самом деле, мне просто нужно больше узнать о HTTP-запросах!   -  person physicsmichael    schedule 08.04.2010


Ответы (1)


Правильный «один вкладыш» (должен был быть многострочным):

POST http://some.host.edu/log/log_query_matlab.php HTTP/1.1
Host: some.host.edu
Content-Type: application/x-www-form-urlencoded
Content-Length: 73

hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show databases

Конец каждой строки имеет \r\n. Промежуток после content-length имеет два набора из них.

person physicsmichael    schedule 10.04.2010