Micropython POST请求正文为空



我有一个POST REST服务的服务器。使用micropython我需要执行POST请求。GET查询到达REST服务,并使用以下格式正确响应:

s.send(b"GET /sensordata/premises HTTP/1.1rnHost:XX.XXX.XXX.XXXrn" + "Accept: application/jsonrnrn")

但是对于POST来说看起来像请求到达了服务器,但是主体是空的。由于某些原因,请求的JSON主体没有以正确的方式解释。

from network import WLAN
import socket
import machine
import time
import struct
import json
import pycom
wlan = WLAN(mode=WLAN.STA)
wlan.connect("*****", auth=(WLAN.WPA2, "*****"), timeout=5000)
while not wlan.isconnected():
machine.idle()
print("Connected to WiFin")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
url = 'XX.XXX.XXX.XXX'
sockaddr = socket.getaddrinfo(url, 80) [0][-1]
s.connect(sockaddr)
print('socket connected')
httpreq = b'POST /sensordata/insertrecords HTTP/1.1 rn Host:XX.XXX.XXX.XXX rn' + 'Accept: application/json rn' + 'Content-Type: application/jsonrn' + ' {"node_id":"1","value":[{"measure_time_stamp":"2020-10-06T09:25:43","temp":"14","humidity":"75","ph1":11,"ph2":12,"ph3":13}]}rnrn'
s.send(httpreq)
time.sleep(1)
rec_bytes = s.recv(4096)
print("RESPONSE = " + str(rec_bytes))
print('end')
s.close()

您知道请求库吗?它是一个受流行的Python请求启发的HTTP客户端库。POST请求很简单:

import urequests
r = urequests.post('https://your/endpoint')

最新更新