2016-06-14 66 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那里得到一个单一的东西。我能够得到一次回应。但是在重现这种效果方面一直没有成功。顺便谢谢你的帮助。 –