Всім привіт) Ніхто з вас, часом не працював з 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
Щиро вдячний всім хто відгукнувся! Проблема вирішилась!
Все було елементарно)
- Після встановлення TCP з’єднання з сервером необхідно було почекати 2…3 с.
- Після тексту власне 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