子域和套接字

Subdomain and sockets

我正在尝试编写一个简单的应用程序来在网站上发出 http get 请求。然后会将一些值放入数据库中。但是我已经停留在一开始了。

我正在尝试访问一个子域(不确定它是不是这样叫的),然后向它写入一个获取命令。但是我似乎无法连接到该网站,因为我获得的 ip 显然来自主站点。最终我想要的是执行以下操作:

"http://innoseis.freeiz.com/mysql.php?sensorValue=12"

其中传感器值是 http 获取。

但是我首先尝试连接并从 www.innoseis.freeiz.com 获取 http 正文,有人可以给我一些正确方向的指示吗?我尝试在 google 上搜索子域套接字,但无济于事。非常感谢:)

到目前为止我的代码(从一些教程中汇编):

http://www.heypasteit.com/clip/1VK6

编辑 尝试 fiddle 使用 telnet 稍作尝试并没有带来结果

telnet www.innoseis.freeiz.com 80
Trying 31.170.161.216...

已连接到 www.innoseis.freeiz.com。

转义字符是“^]”。

GET /mysql.php?sensorValue=12 HTTP/1.1\r\n
Host: www.innoseis.freeiz.com\r\n
Connection: close\r\n
^]

(漫长的等待)

Connection closed by foreign host.

请 post 代码的最小完整可验证示例作为 in-line 代码,而不是 link。

也就是说,你要做的是获取innoseis.freeiz.com的IP,然后连接到那个IP,端口80。然后你发送如下请求:

GET /mysql.php?sensorValue=12 HTTP/1.1
Host: innoseis.freeiz.com
Connection: close

因此,子域在 HTTP 协议中被指定为主机 header。

要解决此问题,我建议如下。 在您的电脑上安装提琴手。我希望你能使用它,否则请使用不同的电脑。 执行您想手动执行的请求,但启用提琴手。 使用 fiddler 你可以准确地看到浏览器发送了什么,你需要在你的代码中做同样的事情。有些字段不太重要,但 HTTP 对换行符等某些内容非常严格。

由于 HTTP 协议细节,您可能只是缺少一个简单的 \r\n 回车符 return 换行符来结束您对服务器的请求。