Search code examples
pythonjsonhttp-postat-command

how to send POST request with sim800 module AT commands?


I am sending post request with AT commands using sim800 module using python

g = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=2)
g.write('AT+HTTPPARA="URL","http://server/path"')
print g.read(128)

OK

g.write('AT+HTTPPARA="CONTENT","application/json"')
print g.read(128)

OK

g.write('AT+HTTPDATA=150,5000'+'\r\n')
print g.read(128)

DOWNLOAD OK

g.write("{\"data\":\"123\"}"+'\r\n')
print g.read(128)

{"data":"123"} ERROR

g.write('AT+HTTPACTION=1' + '\r\n')  # -> POST session start
print g.read(128)

+HTTPACTION:1,400,31

I want to send as json format but when i execute this commands using python it shows outputs like this its not taking json format i have tried using json.loads(json.dumps(data)) but it still not sending to server on server side i wont get data in request.body Object (as per post request)

How to send data in json format in post data ?? or which configuration needed to post data ?

NOTE: I have already configured GSM module for GPRS


Solution

  • Solved using json.dumps() to convert json data to string and to get on server side in request.body object

    data = {"param":"value","param2":0.01}
    g = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=2)
    g.write('AT+HTTPPARA="URL","http://server/path"')
    print g.read(128)
    

    OK

    g.write('AT+HTTPPARA="CONTENT","application/json"')
    print g.read(128)
    

    OK

    g.write('AT+HTTPDATA=1500,5000'+'\r\n')
    print g.read(128)
    

    DOWNLOAD OK

    g.write(json.dumps(data))
    print g.read(128)
    

    OK

    g.write('AT+HTTPACTION=1' + '\r\n')  
    print g.read(128)
    

    +AT+HTTPACTION:1,200,31