2016-03-29 89 views
0

使用的ESP8266並使用以下AT命令我能順利拿到網頁:爲什麼ESP8266在加載php URL時報告DNS失敗?

AT+CIPSTART="TCP","www.somewebsite.com",80 
AT+CIPSEND=80 
> GET http://www.somewebsite.com HTTP/1.0 
<I get a bunch of HTML here> 

到目前爲止好。現在我的網站上有一個php頁面,它需要幾個參數並相應地更新數據庫中的表格。所以,當我鍵入:

HTTP://www.mywebsite.com/mypage.php ARG1 =一個& ARG2 =兩個

它成功地更新表。現在,當我嘗試使用ESP8266做同樣的,我收到了DNS故障:

AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php?arg1=one&arg2=two",80 
<get DNS fail here> 

即使我嘗試PHP頁面沒有論據我得到DNS失敗:

AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php",80 
<get DNS fail here> 

有誰知道什麼是繼續?難道是PHP頁面不在80端口?如果是這樣的話,我該如何找出它的端口?順便說一句,如果我對我的網站上的HTML頁面做同樣的事情,它的工作原理就很好。

編輯: 當我試試這個:

AT+CIPSTART="TCP","www.mywebsite.com",80 
> GET /mypage.php?arg1=one,arg2=two 

我得到這樣的輸出:

錯誤404 - 找不到

,當我嘗試:

AT+CIPSTART="TCP","www.mywebsite.com",80 
> GET http://www.mywebsite.com/mypage.php?arg1=one,arg2=two 

我獲取www.mywebsite.com/index.html的html代碼,而不是php頁面。

我也不確定GET命令中的「HTTP/1.0」是什麼?

+1

該參數只是應該是網站的域名。網址的其餘部分位於'GET'後面。 – Barmar

回答

3

您不要將URL放在AT+CIPSTART行上,它只需要服務器的名稱。網址的其餘部分在GET之後。另外,如果您的服務器執行虛擬主機託管,則需要發送Host:標頭來告訴它要使用哪個服務器名稱。

AT+CIPSTART="TCP","www.mywebsite.com",80 
> GET /mypage.php?arg1=one&arg2=two HTTP/1.1 
> Host: www.mywebsite.com 
+0

謝謝。我試過這個,我得到一個錯誤404頁面沒有找到。我已將我運行的命令和輸出添加到原始問題中。 – Arash

+0

我已經更新了包含'Host:'標題的答案,這是區分虛擬服務器所必需的。 – Barmar

+0

感謝您的好評。有效!我也在stackoverflow上找到了這個命令(找不到源代碼,所以如果你找到它,請在這裏發佈):在終端中運行。這樣你可以發送HTTP命令。在編程ESP8266之前,我發現它非常適合測試命令。 – Arash

相關問題