2017-04-18 275 views
1

我發送POST請求命令,使用sim800模塊使用python如何用sim800模塊AT命令發送POST請求?與AT

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行

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

{ 「數據」: 「123」} ERROR

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

+ HTTPACTION:1,400,31

我想要t o發送爲json格式,但是當我使用python執行這個命令時,它顯示像這樣的輸出它沒有采用json格式我已經嘗試使用json.loads(json.dumps(data)),但它仍然沒有發送到服務器端的服務器我不會在request.body對象中獲取數據發佈請求)

如何在發佈數據中以json格式發送數據? 或哪些配置需要發佈數據?

注:GPRS

+0

當你不是[閱讀和解析](http:// stackoverflow。com/a/33266839/23118)從調制解調器返回的響應,在發送下一個命令之前等待最終結果代碼。如果這在大多數情況下都有效,你真是非常幸運。你應該明確解決這個問題。 – hlovdal

回答

0

我已經配置了GSM模塊使用json.dumps解決()將JSON數據轉換爲字符串,並以request.body對象,以獲取在服務器端

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) 

下載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