День добрый !
Имеем : SIM900 (версия - 7), сниффер (SoftPerfect Network Protocol Analyzer) + Fiddler Web Debugger, Indy 10.
Собственно неясность с использованием встроенной реализации HTTP-сервиса, а именно - метод POST.
Последовательность действий - согласно доке от производителя :
AT+SAPBR ... / AT+HTTPINIT / AT+HTTPPARA ... / AT+HTTPDATA=10,1000 /
>DOWNLOAD 1234567890 >OK
AT+HTTPACTION=1 / >HTTPACTION:1,200,0 / AT+HTTPTERM (запись условно-пояснительная)
HTTP-сервер (Indy) реагирует , но собственно данные (1234567890) в (ARequestInfo: TIdHTTPRequestInfo).UnparsedParams отсутствуют.
Анализ пакетов показал, что SIM900 формирует в запросе следующее :
"POST / HTTP/1.1
Host: NN.NNN.NNN.NNN
Accept: */*
Connection: Keep-Alive
User-Agent: SIMCOM_MODULE
Content-Length: 10
1234567890"
Детальное исследование RFC-XXX и исходников Indy - вещь правильная и очевидная если бы не фактор времени.
Эксперимент показал, что если явно определить "Content-Type: application/x-www-form-urlencoded" - то сервер все парсит и данные на месте. Но добавить это поле посредством SIM900 с лету не удалось, точнее была предпринята попытка используя AT+HTTPDATA дописать Content-Type ... увы, ибо Content-Length формируется автоматом. Перекрыть его вторым идентичным полем с иным параметром тоже не удалось ...
Кто-то уже все это победил ?