2017-03-29 24 views
1

我已經有了一項任務,可以編寫一個Web服務來將數據從傳感器推送到服務器數據庫。針對命令行用戶的PHP網絡服務

我已經寫了一個PHP web服務,它在GET中接受一些參數,處理其中的數據並將數據存儲在數據庫中。

http://www.example.com/pushDataService/index.php?arg1=<Data 1>&arg2=<Data 2>&arg3=<Data 3> 

但我們的固件程序員想要的東西,他可以在命令行上測試。 就像SMTP通信使用telnet

Telnet mail.example.com 25 
EHLO mail.example.com 
AUTH LOGIN 
UserName encrypted in base 64 
Password encrypted in base 64 
MAIL FROM:<[email protected]> 
RCPT TO:<[email protected]> 
DATA this is a test message. 

我可以讓web服務工作這樣,他可以做到在命令行握手過程,然後將每個參數單獨發送和用戶獲得每個參數的響應?

請幫忙,我是PHP新手,不知道這樣的(網絡)服務!

謝謝

編輯: 我們已經使用MQTT推數據到服務器,但我們需要另一個服務器推出其將作爲SMTP郵件服務器和MQTT協議的組合數據.. SOAP web服務會爲我完成這項工作嗎?

+0

結賬http://php.net/cli – hassan

+0

我不認爲PHP會做的伎倆,至少不是一個人,你應該檢查出如何使一個傳入的TCP端口在您的服務器上 – Gert

+0

我記得當我用來重新編程通過3G發送數據的電錶時,他們總是連接到一個端口,是的使用類似於郵件的smtp,也許你可以添加一個郵件服務器並修改爲正確的格式獲取數據 – Gert

回答

2

http://www.example.com/pushDataService/index.php?arg1=<Data 1>&arg2=<Data 2>&arg3=<Data 3>請求可只需使用telnet如下SMTP通信,如:

Telnet www.example.com 80 
GET /pushDataService/index.php?arg1=<Data 1>&arg2=<Data 2>&arg3=<Data 3> HTTP/1.1 
Host: www.example.com 
<CR> 
<CR> 

與GET請求推數據是不是最好的主意。 PUT或POST請求會更合適。首先,它不是冪等的,不應該被緩存,更重要的是 - 它在數據格式和大小方面更加靈活。 POST請求發送JSON數據可能看起來像

Telnet www.example.com 80 
POST /pushDataService/index.php HTTP/1.1 
Host: www.example.com 
Content-Type: application/json; charset=utf-8 
Content-Length: 57 

{"arg1":"<Data 1>", "arg2":"<Data 2>", "arg3":"<Data 3>"} 
+0

我知道Web服務可以像這樣來訪問,但正如我在這個問題提到的,我握手後需要反應和發送每個參數後。再說了,當我輸入'的Telnet www.example.com 80',然後按回車,我應該得到迴應說'連接established'發送參數1等等.... – Ana

+0

正如我之前評論這種交流是不是** **網絡服務的任何以上,還可以用做[原始套接字(http://php.net/manual/en/book.sockets.php),見[例如套接字服務器的](HTTP:/ /php.net/manual/en/sockets.examples.php)。如果遵循這條路線,從定義自己的通信協議開始,到維護長時間運行的PHP腳本和套接字管理結束,就有2001年要解決的難題。 PHP幾乎不是這項工作的最佳工具。 –

相關問題