2016-03-29 22 views
0

başarıyla web sayfasını alabileceğimiz bir ESP8266 kullanma ve aşağıdaki AT komutlarını kullanarak:php URL'si yüklenirken ESP8266 DNS neden başarısız oluyor?

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> 

Şimdiye kadar iyi. Şimdi web sitemde birkaç parametre alan ve buna göre bir veritabanındaki bir tabloyu güncelleyen bir php sayfası var. Bu yüzden yazarken:

http: //www.mywebsite.com/mypage.php arg1 = tek & arg2 = başarıyla tablosunu günceller iki

. Ben bir dns aynı şeyi ESP8266 kullanmayı deneyin Şimdi başarısız:

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

Ben DNS başarısız olsun kanıtlar olmaksızın php sayfası etsek:

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

kimse ne olduğunu biliyor mu devam ediyor? Php sayfasının port 80'de olmaması olabilir mi? Ve eğer durum buysa, hangi portun açık olduğunu nasıl öğrenebilirim?

Bu arada, web sitemde bir html sayfası ile aynı şeyi yaparsam, gayet iyi çalışır.

DÜZENLEME:

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

alıyorum bu çıktıyı: Bunu çalıştığınızda

Hata 404 -

Bulunan Ve Değil ben çalıştığınızda:

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

I php sayfasını değil, www.mywebsite.com/index.html html kodunu edinin.

GET komutunda "HTTP/1.0" ifadesinin ne işe yaradığını da bilmiyorum?

+1

Tartışma yalnızca web sitesinin etki alanı adı olmalıdır. URL'nin geri kalanı "GET" in ardından gider. – Barmar

cevap

3

URL'yi, yalnızca sunucunun adını isteyen AT+CIPSTART satırına koymuyorsunuz. URL'nin geri kalanı GET'dan sonra gider. Ayrıca, sunucunuz sanal olarak barındırıyorsa, hangi sunucu adını kullanacağını söylemek için bir Host: başlığı göndermeniz gerekir.

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

Teşekkürler. Bunu denedim ve 404 sayfamda bir hata bulunamadı. Çalıştığım komutları ve çıktıyı orijinal soruya ekledim. – Arash

+0

Sanal sunucuları ayırt etmek için gerekli olan Host: 'başlığını içerecek şekilde cevabı güncelledim. – Barmar

+0

Büyük cevap için teşekkürler. İşe yaradı! Ben de bu komutu stackoverflow üzerinde buldum (kaynağı bulamıyorsanız lütfen burayı buraya yazınız): terminalde çalıştırmak için. Bu şekilde HTTP komutları gönderebilirsiniz. ESP8266'yı programlamadan önce komutları test etmek için harika buldum. – Arash

İlgili konular