Gsm/gprs + http + stm32

Всім привіт) Ніхто з вас, часом не працював з HTTP запитами на сервер, через GSM/GPRS модулі з STM32, можливо AVR…? Я вже довгий час воюю з ними і отримую від сервера постійну відповідь Error 400 - Bad Request. Не подобається йому синтаксис запиту… чи, ще щось. Так от, можливо в когось є досвід чи інфа по даному питанню. Буду дуже вдячний. Дякую)

1 Like

як мінімум варто надсилати ряд заголовків, серед яких

GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br

також є хороші ліби під sim модулі, @fronders порекомендуй пліз)

1 Like

Не STM32, але на С слав і парсив HTTP(S) на амазон.

Дуже допомогло здампити з пристрою запит, аксес токен (в вас може не бути) і вислати це через PostMan. На перший запит отримав 404, мучив постман допоки не отримав відповіді, і тільки потім переніс на девайс.

2 Likes

Під SIM800 шикарна ліба від Tilen Majerle (ST) з використанням FreeRTOS: https://github.com/MaJerle/GSM_AT_Lib

2 Likes

Щиро вдячний всім хто відгукнувся! Проблема вирішилась!
Все було елементарно)

  1. Після встановлення TCP з’єднання з сервером необхідно було почекати 2…3 с.
  2. Після тексту власне http запиту необхідно вставити пусту строку + символ ‘\r’
    Псевдокод зображено нижче.
GSM_SET_TCP_CONNECT(); /*Встановлення з'єднання з сервером*/
delay_ms(3000); /*Очікування підключення*/
GSM_GET_TCP_STATUS(); /*Перевірка статусу підключення*/

GSM_SEND("GET /xxx.php?a=1&b=2 HTTP/1.1\r\nHost: xxxxxx.com.ua\r\n\r\n"); /*відправкпа http запиту*/
GSM_SEND('\r'); /*обов'язково '\r' після самого http запиту*/
GSM_GET_HTTP_STATUS(); /*Перевірка чи відправився запит*/

Надіюсь комусь з початківців, колись ця інфа допоможе.

4 Likes