Wifi shield и его работа с длинными URL
- Войдите на сайт для отправки комментариев
Сб, 18/05/2013 - 21:50
Добрый день!
Использую Wifi Shield V1.0
и библиотеку для него. В библиотеке есть класс HTTPClient с методом get. Привожу весь код:
#include <Arduino.h> #include <SoftwareSerial.h> #include <WiFly.h> #include "HTTPClient.h" #define AUTH WIFLY_AUTH_WPA2_PSK //#define HTTP_GET_URL "http://static-maps.yandex.ru/1.x/?ll=37.620070,55.753630&size=450,450&z=13&l=map&pt=37.620070,55.753630,pmwtm1~37.64,55.76363,pmwtm99" #define HTTP_GET_URL "http://www.ya.ru/" WiFly wifly(51, 50); HTTPClient http; char get; void setup() { Serial.begin(9600); // Wait WiFly to init // delay(3000); wifly.reset(); while (1) { Serial.println("Try to join "); if (wifly.join("DIR-320NRU", "12345678", AUTH)) { Serial.println("Succeed to join "); wifly.clear(); break; } else { Serial.println("Failed to join "); Serial.println("Wait 1 second and try again..."); delay(1000); } } Serial.println("\r\nTry to get url - " HTTP_GET_URL); Serial.println("------------------------------"); while (http.get(HTTP_GET_URL, 10000) < 0) { } while (wifly.receive((uint8_t *)&get, 1, 1000) == 1) { Serial.print(get); } if (wifly.commandMode()) { Serial.println("\r\n\r\nEnter command mode. Send \"exit\"(with \\r) to exit command mode"); } } void loop() { int c; while (wifly.available()) { c = wifly.read(); if (c > 0) { Serial.write((char)c); } } while (Serial.available()) { c = Serial.read(); if (c >= 0) { wifly.write((char)c); } } }
если оставить как есть: #define HTTP_GET_URL "http://www.ya.ru/"
wifi возвращает ответ сервера, если же раскомментировать выделенную строку в коде с длинным запросом, то код не выполняется, пишет "Path buffer is too small."
Хорошо, буфер маленький, память вроде еще есть, увеличу:
#define HTTP_MAX_PATH_LEN 150
После этого запрос уходит, но в ответ приходит или 400 ошибка или 404.
Как можно посмотреть, какой запрос реально уходит?
Что порекомендуете поправить?
Вопрос снят.
Как удалить тему?