Получение контента из PHP: проблема с POST и запросом - PullRequest
0 голосов
/ 08 апреля 2010

Извиняюсь за мой самый длинный вопрос о 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, если мое «сообщение»

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

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

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

1 Ответ

0 голосов
/ 10 апреля 2010

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

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.Пробел после длины содержимого имеет два набора из них.

...