2016-03-29 11 views
0

Mit Hilfe eines Esp8266 und mit dem folgenden AT-Befehle ich erfolgreich die Webseite bekommen:Warum meldet ESP8266 DNS beim Laden der PHP-URL?

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> 

So weit so gut. Jetzt habe ich eine PHP-Seite auf meiner Website, die ein paar Parameter nimmt und eine Tabelle in einer Datenbank entsprechend aktualisiert. Also, wenn ich schreibe:

http: //www.mywebsite.com/mypage.php arg1 = ein & arg2 = zwei

Es erfolgreich die Tabelle aktualisiert. Jetzt, wenn ich versuche ESP8266 zu verwenden, um das gleiche ich einen DNS bekommen nicht zu tun:

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

Selbst wenn ich die PHP-Seite ohne die Argumente versuche ich bekommen DNS fehlschlagen:

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

Wer weiß, was ist geht es weiter? Könnte es sein, dass die PHP-Seite nicht auf Port 80 ist? Und wenn das der Fall ist, wie finde ich heraus, auf welchem ​​Port es ist?

Übrigens, wenn ich das gleiche mit einer HTML-Seite auf meiner Website mache, funktioniert es gut.

EDIT: Wenn ich versuche, dieses:

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

ich diese Ausgabe:

Error 404 - Not Found

Und wenn ich versuche:

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

I Holen Sie sich den HTML-Code von www.mywebsite.com/index.html und nicht die PHP-Seite.

Ich bin auch nicht sicher, was das "HTTP/1.0" im GET-Befehl tut?

+1

Das Argument soll nur der Domain-Name der Website sein. Der Rest der URL steht hinter "GET". – Barmar

Antwort

3

Sie legen die URL nicht auf die Zeile AT+CIPSTART, die nur den Namen des Servers will. Der Rest der URL geht nach GET. Wenn Ihr Server ein virtuelles Hosting durchführt, müssen Sie außerdem einen Header Host: senden, um ihm mitzuteilen, welcher Servername verwendet werden soll.

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

Danke. Ich habe das versucht und ich bekomme eine Fehler 404 Seite nicht gefunden. Ich habe die Befehle, die ich ausgeführt habe, und die Ausgabe der ursprünglichen Frage hinzugefügt. – Arash

+0

Ich habe die Antwort aktualisiert, um den 'Host:' - Header einzufügen, der benötigt wird, um virtuelle Server zu unterscheiden. – Barmar

+0

Danke für die tolle Antwort. Es funktionierte! Ich habe diesen Befehl auch bei stackoverflow gefunden (kann die Quelle nicht finden, also bitte hier posten, wenn Sie sie finden): im Terminal laufen. Auf diese Weise können Sie HTTP-Befehle senden. Ich fand es großartig, die Befehle vor dem Programmieren des ESP8266 auszuprobieren. – Arash

Verwandte Themen