Skocz do zawartości
RFM

Jak odczytać zawartość URL w ESP8266 pracującym w roli serwera?

Pomocna odpowiedź

W jaki sposób odczytać w ESP URL przekazany przez przeglądarkę? Interesuje mnie zawartość URL za znakiem "?" bo na tablicę $_GET[] to raczej nie mogę liczyć?

Widzę, że cos tam jest

arg (const char *name)
String arg (int i)
String argName (int i)

 

Udostępnij ten post


Link to post
Share on other sites

No i jaki masz problem z zastosowaniem tego co widzisz?

To nie PHP, nie wiem czy zauważyłeś, a server.arg(nazwa) działa dokładnie tak jak potrzebujesz (wyciąga wartość argumentu z query).

Resztę sobie znajdziesz w dokumentacji.

 

 

 

Udostępnij ten post


Link to post
Share on other sites
3 godziny temu, ethanak napisał:

No i jaki masz problem z zastosowaniem tego co widzisz?

Dwa posty zostały połączone w jeden i wyszło, że w pytaniu daję odpowiedź.

Problem prawie rozwiązany, zastanawiam się jak uniezależnić się od kolejności argumentów. W PHP banał $_GET["nazwa argumentu"], tu muszę coś wymyślić.

 

Chyba pętla rozwiąże problem

  for (byte a = 0; a < webServer.args(), a++) {
    if ( webServer.argName(a) == "orno" ) if ( webServer.arg(a) == "on" ) fl_OrnoOn = true; else fl_OrnoOn = false;
    if ( webServer.argName(a) == "thing" ) if ( webServer.arg(a) == "on" ) fl_ThingOn = true; else fl_ThingOn = false;
    }

 

Udostępnij ten post


Link to post
Share on other sites
7 godzin temu, RFM napisał:

Dwa posty zostały połączone w jeden i wyszło, że w pytaniu daję odpowiedź.

Dałeś odpowiedź z której nie potrafisz skorzystać.
 

fl_OrnoOn = webserver.arg("orno") == "on";

Przy okazji jakieś podstawy C/C++ warto by było odświeżyć...

Udostępnij ten post


Link to post
Share on other sites
4 godziny temu, ethanak napisał:


 


fl_OrnoOn = webserver.arg("orno") == "on";

Przy okazji jakieś podstawy C/C++ warto by było odświeżyć...

Wskaż mi gdzie pokazałem wyżej wskazany fragment kodu?

 

  • Nie zgadzam się! 1

Udostępnij ten post


Link to post
Share on other sites

Nigdzie - to była odpowiedź której potrzebowałeś. Szkoda że zamiast z miejsca doszukiwać się spisków i czyhania na Twoją osobę nie zadasz sobie trudu, aby zrozumieć co się do Ciebie pisze...

Najlepiej zresztą byłoby zajrzeć na początku do jakiejś dokumentacji czy przykładów, ale to przecież dla cieniasów jest, prawda?

Udostępnij ten post


Link to post
Share on other sites
13 minut temu, ethanak napisał:

Nigdzie - to była odpowiedź której potrzebowałeś

Nie do końca. Gdy <> "on" to flaga przyjmie false a ma to nastąpić tylko gdy =="off", ponadto kod ma być zrozumiały dla początkujących dlatego nie używam

if( x = a == b )

i innych skrótów za to nadużywam nawiasów.

 

Nie chce zakładać nowego tematu, nie znalazłem możliwości odczytu IP clienta www a muszę odróżnić czy połączenie jest lokalne czy nie. Jedyne co może pomóc to hostHeader() ale nie jest to dokładnie to co chciałbym zrobić.

 

16 minut temu, ethanak napisał:

Najlepiej zresztą byłoby zajrzeć na początku do jakiejś dokumentacji czy przykładów, ale to przecież dla cieniasów jest, prawda?

Dla leni. Robię tak jak inni, najpierw pytam potem szukam a nie tak jak powinno być, szukam, nie znalazłem, pytam. Po prostu idę z duchem czasu, próbuję się dostosowac aby nie wyróżniać się z tłumu.

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, RFM napisał:

ponadto kod ma być zrozumiały dla początkujących

Czyli trzy linijki kodu trzeba za Ciebie napisać bo nie potrafisz? No to coś w stylu:
 

String flag = webserver.arg("orno");
if (flag == "on")
	fl_OrnoOn = true;
else if (flag == "off")
	fl_OrnoOn = false;

Na pewno bardziej zrozumiałe niż jakieś porąbane pętle (mam nadzieję że go rozumiesz).

1 godzinę temu, RFM napisał:

nie znalazłem możliwości odczytu IP clienta www

Bo nie szukałeś albo szukałeś hgw gdzie.

Masz metodę client(), prawda? Co zwraca? A czy w tym zwracanym jest może takie coś jak remoteIP()?

1 godzinę temu, RFM napisał:

Robię tak jak inni, najpierw pytam potem szukam

No więc zdecyduj się - szukasz czy pytasz?

1 godzinę temu, RFM napisał:

próbuję się dostosowac aby nie wyróżniać się z tłumu.

Kolego es2 - żebyś nie wiem ile nicków zmieniał i ile razy próbował, zawsze będziesz się wyróżniał. Niestety - na minus. Na razie wyróżniłeś się tym, że Ci się nie chciało zerknąć do dokumentacji czy źródeł tylko zrobiłeś z siebie pośmiewisko i polazłeś na forum z kretyńskim pytaniem. Powyróżniaj się jeszcze, to jedynymi osobami, które będą Ci odpowiadać będą te, które nie wiedzą o zakazie karmienia.

 

Udostępnij ten post


Link to post
Share on other sites
5 minut temu, ethanak napisał:

Czyli trzy linijki kodu trzeba za Ciebie napisać bo nie potrafisz? No to coś w stylu:

Już wczoraj to zrobiłem.

 

5 minut temu, ethanak napisał:

Na pewno bardziej zrozumiałe niż jakieś porąbane pętle (mam nadzieję że go rozumiesz).

A jak bez pętli mam sprawdzić wszystkie argumenty? 

 

7 minut temu, ethanak napisał:

Masz metodę client(), prawda? Co zwraca?

Jeszcze nie sprawdzałem.

Udostępnij ten post


Link to post
Share on other sites
3 godziny temu, RFM napisał:

A jak bez pętli mam sprawdzić wszystkie argumenty? 

A po co sprawdzasz wszystkie argumenty? W PHP też przelatujesz sobie całą tablicę $_GET czy sprawdzasz to co jest interesujące?

Jaka ma być różnica w wywołaniu:

http://gdzieśtam/cośtam?orno=on

a

http://gdzieśtam/cośtam?orno=on&pupa=blada

 

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, ethanak napisał:

W PHP też przelatujesz sobie całą tablicę $_GET czy sprawdzasz to co jest interesujące?

Interesujące mnie, przeszukiwanie robi Apahe.

 

1 godzinę temu, ethanak napisał:

Jaka ma być różnica w wywołaniu:

No właśnie jest. Nie ma gwarancji, ze kolejna zmiana softu nie zmieni tej kolejności a bardziej to, że jakiś argument zostanie zlikwidowany. nie mam do przeszukania setek argumentów co najwyzej 10.

 

Dochodzi też opcja wywołania podstrony przez jakąś aplikację np na RPi. Po co mam podawać kilka argumentów jak chcę zmienić jeden? Ponadto, aby zmienić trzeci musiałbym wcześniej odczytać dwa. Z natury jestem leniwy i wole dać jedną pętlę, która rozwiązuje moje problemy.

Udostępnij ten post


Link to post
Share on other sites
36 minut temu, RFM napisał:

przeszukiwanie robi Apahe.

 

A w tym przypadku webserver. Nie wiem, czy wiesz, ale istnieją inne serwery HTTP oprócz Apache (przez ch), np. Nginx czy ESP8266WebSerwer które zajmują się parsowaniem query string.

 

39 minut temu, RFM napisał:

No właśnie jest. Nie ma gwarancji, ze kolejna zmiana softu nie zmieni tej kolejności

Polegasz na kolejności argumentów w query stringu? W PHP też???

40 minut temu, RFM napisał:

Dochodzi też opcja wywołania podstrony przez jakąś aplikację np na RPi. Po co mam podawać kilka argumentów jak chcę zmienić jeden? Ponadto, aby zmienić trzeci musiałbym wcześniej odczytać dwa

To jakieś brednie. W ogóle wiesz jak działa serwer czy zatrzymałeś się na wyświetlaczu do STM-a?

Jeśli chcesz zmienić jeden parametr to podajesz jeden. Nie bardzo rozumiem po co tu jakieś pętle i łażenie po wszystkich argumentach QS.

Jakie dwa masz odczytać?

Jaka jest różnica między:
 

if (isset($_GET['orno'])) {
	$orno = $_GET['orno'];
	if ($orno == 'on') $fl_OrnoOn = true;
	else if ($orno == 'off') $fl_OrnoOn = false;
}

a
 

String flag = webserver.arg("orno");
if (flag == "on") fl_OrnoOn = true;
else if (flag == "off") fl_OrnoOn = false;

i gdzie w tym drugim przypadku masz jakieś pętle których nie masz w pierwszym.

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
23 godziny temu, ethanak napisał:

i gdzie w tym drugim przypadku masz jakieś pętle których nie masz w pierwszym.

Umknął mi fakt, że argumentem arg() może być także string. Dzięki za wskazówkę.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...