Wifi shield и его работа с длинными URL

mihart
Offline
Зарегистрирован: 14.05.2013

Добрый день!

Использую 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.

Как можно посмотреть, какой запрос реально уходит?

Что порекомендуете поправить?

mihart
Offline
Зарегистрирован: 14.05.2013

Вопрос снят.

Как удалить тему?