使用Arduino和HTTP填写webform

时间:2013-02-07 18:35:19

标签: c http arduino webclient

我正在尝试使用arduino登录我创建的网站 在网站上有一个基本表单,其中有两个字段用于密码,一个用于用户名,它还有一个标记为登录的提交按钮。

当我使用chrome登录时,我使用fiddler2来嗅探http数据包,并尝试使用该http帖子中的信息重新创建我自己的帖子进行登录。

以下是我用于登录的代码部分:

if (client.connect(server, 80)) {

 Serial.println("connected to server");

// Make a HTTP request:               
 client.println("POST/username=slwhore&passwd=1234qwer%21&op2=login&lang=english&force_session=1&return=B%3AaHR0cDovL3JlbW90bGV0LmNvbS8%3D&message=0&loginfrom=loginmodule&cbsecuritym3=cbm_56b7d5e7_00583e07_b0b6f81b4c86d117542f5cc7b7c3416e&Submit=Login HTTP/1.1");

client.println("Host:www.remotlet.com");

client.println("Content-Type: application/x-www-form-urlencoded");

client.println("Content-Length: 229");

client.println("Connection: close");

client.println();

然后我有另一段代码收到我知道有效的主机回来的信息。当我运行此代码时,我能够连接到服务器,但我根本没有得到任何响应。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的HTTP请求完全错误,任何类型的服务器网都永远不会接受它。

第1行:HTTP第1行是METHOD URI VERSION。 您没有在方法和URI之间放置空格,POST数据也是部分URI,就像使用GET请求时一样。我不知道你的服务器使用了什么,但通常理智的登录不使用GET,也不会在URI中传递登录。

第二行:你忘了一个空格

第4行:您设置了内容长度,但显然没有发送任何内容。

一般考虑:在HTTP中,行终止符是\ r \ n,而不仅仅是\ n。

我建议您使用浏览器执行请求,使用wireshark拦截流量,看看它是如何完成的。