AnsweredAssumed Answered

POST large data with a single request

Question asked by Luca DC on Feb 1, 2017
Latest reply on Feb 3, 2017 by Luca DC

Hi,

I'm using a SPWF01SA1 module to send data from my application to a central server using POST requests.

I need to transfer 64 kByte of binary data (application/octet-stream) using a single POST request as I want the destination server to receive a single transfer command which must be validated and confirmed back for correct reception.

 

I've seen that the command AT+S.HTTPPOST has limitations on maximum length so I cannot use it.

 

Then I've upgraded the firmware to version 3.5 to try command AT+S.HTTPREQ, build my own POST header and be able to send data after the command.

In this way I've managed to send up to something less than 12 kByte. During transfer, the RTS signal is raised every 1024 byte so I inserted a pause to let the buffer flush. No matter how long I wait between the HTTPREQ command and the data (should I wait?) or between RTS signals (all of which stay deasserted for a fixed time of less than 3.5 ms and I've raised my pause time up to 1 s): when the data amount is 11460 bytes or more the packet won't reach its destination while with 11440 bytes everything works fine.

My current destination for testing is posttestserver.com, where I've found stored messages of several kBytes (even one slightly less than 1 MByte) so I assume that there's not a limitation on that side.

 

When the transmission fails the SPWF01SA1 doesn't say anything, I simply don't get the expected reply from the server.

 

I've also tried to split my single POST request into a sequence of AT+S.HTTPREQ commands (one for the POST header and one for just 32 bytes of data) but I couldn't make it work. Hence I assume that this splitting is not possible.

 

My question: is there a way with this module to send a 64 kByte block of binary data using a single POST request?

What is the recommended way to transfer large amounts of data?

 

Thank you.

Outcomes