2013-02-07 19 views
0

我試圖讓一個arduino登錄到我創建的網站。
在網站上有一個基本的表單,其中有兩個字段,一個用於用戶名,另一個用於標識登錄。使用Arduino和HTTP填充網絡表格

我使用fiddler2來嗅探http數據包,當我使用chrome登錄並且試圖使用來自該http post的信息來重新創建我自己的帖子來登錄。

這裏是我使用的登錄的代碼部分:

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

您沒有發送任何表單數據,表單數據將位於最後一個空白打印行之後,並且看起來像fieldname = value&otherfieldname = othervalue –

回答

2

您的HTTP請求是完全錯誤的,它永遠不會被任何種類的服務器網絡所接受。

第一行:HTTP第一行是METHOD URI VERSION。 您沒有在方法和URI之間放置空格,POST數據也是使用GET請求時的而不是的一部分。我不知道你的服務器使用什麼,但通常理智的登錄不使用GET,也不通過URI內部的登錄。

二號線:你忘了空間

四號線:您設置內容長度,但你不明顯發送任何內容。

一般考慮:在HTTP中,行結束符是\ r \ n,而不僅僅是\ n。

我建議你用瀏覽器做請求,用wireshark攔截流量,看看它是如何完成的。