道歉爲我有史以來最長的問題。我正在嘗試在ROOT(一個用於高能物理分析的C++ CERN框架)中的mysql數據庫的php前端接口。首先,我試着讓這個php界面先與wget
和curl
配合,因爲我更熟悉它們。下面的命令作品:從PHP獲取內容:POST和查詢的問題
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請求(我見過multi-line stuff。是嗎?)對不起,我很無能!
PS。 mysql的查詢是show databases
,但空間已被替換爲_spazio_
,意大利人的空間。 db和php接口的作者需要它(以及各種符號的替換),但是有沒有人看到過這個?試圖解決這個問題非常糟糕!
看起來像你的問題是不是MySQL或PHP或頭相關。它可以簡稱爲「如何使用ROOT框架發送POST HTTP請求(或者如何找到使用此框架來執行命令行實用程序的方法)」,對嗎? – 2010-04-08 06:06:07
我想是吧。它也可以是「如何在一個班輪中發送POST HTTP請求」。由於ROOT是C++,可能有一個C++庫用於實現SendRaw。是否有提交HTTP請求的通用C++格式?真的,我只需要更多地瞭解HTTP請求! – physicsmichael 2010-04-08 14:11:31