2016-06-14 97 views
1

Breif說明我正在努力完成的任務。所以我正在與Crestrons Simpl +軟件合作。我的工作是創建一個稱爲QT Pro的聲音掩模系統模塊。現在,QT Pro擁有一個可以通過HTTP控制的API。我需要一種方法來通過HTTP建立與QT Pro的連接(我擁有我需要的一切,IP,用戶名,密碼)。如何通過端口80發送HTTP命令

請告訴我這個問題?我剛開始使用這種語言。不幸的是,我沒有那麼多的文件,否則我不會在這裏。我知道我需要通過端口80上的TCP創建套接字連接。我只是不知道我應該通過它發送什麼。

下面是一個例子: http://username:[email protected]/cmd.htm?cmd=setOneZoneData&ZN=Value&mD=Value & MN =值& auxA =值& auxB =值& AUTOR =價值

如果我把這個在URL框中,並正確填寫它。那麼它會改變我指定的值。我應該發送整個事情嗎?或者在cmd.htm之後?還是有其他方式我應該發送數據?我想遠離TCP/IP模塊,所以我可以將這一切都保存在同一個模塊中。

謝謝。

回答

0

您發送

GET /cmd.htm?cmd=setOneZoneData&ZN=Value&mD=Value&mN=Value&auxA=Value&auxB=Value&autoR=Value HTTP/1.1 
Host: address 
Connection: close 

(完一對夫婦的換行。)

如果您需要使用HTTP基本身份驗證,則還包括像

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= 

,其中一個頭亂碼是用戶名:密碼的base64編碼版本。

但是肯定有一些機制可以打開已經存在的HTTP連接嗎?只要盲目地拋出像這樣的標題,並希望響應是你所期望的是不健壯的,至少可以說。

要看看是怎麼回事,你的請求和響應,一個偉大的工具是netcat的(或telnet,對於這個問題)。

nc address 80連接到服務器address的80端口,然後將您的HTTP請求:

GET /cmd.htm HTTP/1.1 
Host: address 
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= 
Connection: close 

然後看看會發生什麼。 SOMETHING應該回來。 (請記住以兩條換行符結束。)

要查看瀏覽器在您執行某些操作時發送的請求,可以這樣聽:nc -l -p 8080。 然後像以前一樣使用URL的其餘部分將您的瀏覽器導向localhost:8080,您將看到發送的請求。 (然後你可以輸入回查看瀏覽器如何處理響應。)

+0

有打開套接字連接的函數,其餘的由我決定。我希望有一個更簡單的方法。現在唯一的問題是我必須使用WWW身份驗證。我嘗試使用它的標題。但QTPro沒有迴應。這是我所擁有的 GET /zonedata_1.htm HTTP/1.1 主機:192.168.10。70 授權:基本YWRtaW46c2VjcmV0 連接:關閉 –

+0

@DanielB:嘗試使用netcat(或telnet)進行調試 - 我添加了一些信息給我的答案。 – Kundor

+0

我一直在使用wireshark觀看交通,看看是否有什麼東西回來。但我甚至沒有從QT Pro那裏得到一個單一的東西。我能夠得到一次迴應。但是在重現這種效果方面一直沒有成功。順便謝謝你的幫助。 –