无法使用 ESP8266 发出 HTTP 请求

Cannot make HTTP request using ESP8266

几天以来,我一直在尝试将简单的网络应用程序与 ESP8266 模块结合起来。现在我无法从 ESP(配置为客户端)向我的应用程序或任何其他服务器发送 HTTP 请求。

当我每次收到 Bad request 时都尝试向某个网站发出 GET 请求。这是我的命令(我使用 python 脚本来加速建立连接的过程。)

send_command('AT+CWMODE=1\n', wifi)

send_command('AT+CIPMUX=0\n', wifi)

send_command('AT+CWJAP="my_network","password"\n', wifi)

send_command('AT+CIPSTART="TCP","onet.pl",80\r\n', wifi,2)

request = r"HEAD / HTTP/1.1\r\nHost: onet.pl\r\nConnection: close\r\n\r\n"

send_command('AT+CIPSEND=' + str(len(request)) + '\n', wifi)

send_command(request,wifi,5)

Send_command函数:

def send_command(komenda, serial_name,czas=1):

while serial_name.writable() == 0:
    pass

serial_name.write((komenda).encode())

while serial_name.out_waiting:
    pass

while serial_name.in_waiting == 0:#<= len(komenda)+4:
    pass

while serial_name.readable() == 0:
    pass
res = (serial_name.read(serial_name.in_waiting))

if czas == 1:
    time.sleep(1)
else:
    time.sleep(2)
if serial_name.in_waiting:
    res= res+ (serial_name.read(serial_name.in_waiting))

print (res.decode('utf-8','ignore'))

serial_name.reset_input_buffer()
serial_name.reset_output_buffer()

return res.decode('utf-8','ignore')

响应是:

+IPD,160:HTTP/1.1 400 Bad Request Server: Dreamlab Accelerator Date: Sat, 10 Jun 2017 16:32:00 GMT Content-Type: text/html Content-Length: 166 Connection: close

对于我的代码中有什么问题的任何建议,我将不胜感激。

又过了一天我解决了这个问题。 这是我的解决方案(也许对其他人有帮助)

  1. 升级esp8266固件到0.9.5.2版本
  2. 每个命令都应该以符号'\r\n'结束
  3. 每个命令都应该是普通字符串(不是上面 post 中请求命令中的原始字符串)。