我正在尝试使用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();
然后我有另一段代码收到我知道有效的主机回来的信息。当我运行此代码时,我能够连接到服务器,但我根本没有得到任何响应。任何帮助将不胜感激。
答案 0 :(得分:2)
您的HTTP请求完全错误,任何类型的服务器网都永远不会接受它。
第1行:HTTP第1行是METHOD URI VERSION。 您没有在方法和URI之间放置空格,POST数据也是不部分URI,就像使用GET请求时一样。我不知道你的服务器使用了什么,但通常理智的登录不使用GET,也不会在URI中传递登录。
第二行:你忘了一个空格
第4行:您设置了内容长度,但显然没有发送任何内容。
一般考虑:在HTTP中,行终止符是\ r \ n,而不仅仅是\ n。
我建议您使用浏览器执行请求,使用wireshark拦截流量,看看它是如何完成的。