EC200U模块HTTPS POST请求返回400 Bad Request求助排查
Quectel EC200U发送HTTPS POST请求返回400 Bad Request问题排查
使用Quectel EC200U模块向部署在Render上的Flask服务器发送HTTPS POST请求,SSL配置看似正常,但始终收到HTTP/1.1 400 Bad Request响应。Postman测试同一API请求正常,可排除URL本身的问题。以下是已执行的AT命令:
ATE1 ATI +CPIN: READY +CREG: 0,5 +CEREG: 0,5 +CSQ: 12,99 AT+QICSGP=1,1,"airtelgprs.com","","",1 AT+QIACT=1 AT+QIACT? +QIACT: 1,1,1,"100.92.77.245" AT+QPING=1,"weatherapp-d0io.onrender.com" AT+QHTTPCFG="sslctxid",1 AT+QSSLCFG="sslversion",1,4 AT+QSSLCFG="ciphersuite",1,0xffff AT+QSSLCFG="seclevel",1,0 AT+QSSLCFG="sni",1,1 AT+QHTTPCFG="contextid",1 AT+QHTTPCFG="requestheader",1 AT+QHTTPCFG="responseheader",1 AT+QHTTPCFG="header","content-type:application/json" AT+QHTTPCFG="header","user-agent:quectel" AT+QHTTPCFG="header","accept:*/*" AT+QHTTPCFG="header","accept-encoding:gzip,deflate,br" AT+QHTTPCFG="header","connection:keep-alive" AT+QHTTPCFG="header","host:weatherapp-d0io.onrender.com" AT+QHTTPURL=48,120 CONNECT OK AT+QHTTPPOST=85,120,120 CONNECT OK AT+QHTTPREAD=80 CONNECT HTTP/1.1 400 Bad Request Server: cloudflare
可能的问题点及排查方向:
- 请求体未正确发送:
AT+QHTTPPOST=85,120,120指定了85字节的请求体长度,但日志中未显示在CONNECT后输入对应的JSON内容。必须在模块返回CONNECT后,立即输入符合长度要求的合法JSON数据,输入完成后需发送模块要求的结束符(通常为+++,部分模块需按特定流程结束输入)。Postman能正常请求的核心原因是发送了完整且格式正确的请求体,模块端缺失或格式错误会直接导致400。 - 请求头配置问题:重复使用
AT+QHTTPCFG="header"添加字段时,需避免重复的Host头(Cloudflare对重复请求头敏感);另外需确保Content-Type与请求体完全匹配——请求体必须是严格符合JSON语法的格式,无多余逗号、引号不匹配等问题。 - SSL配置细节遗漏:当前SNI配置仅启用但未指定具体域名,尝试修改为
AT+QSSLCFG="sni",1,"weatherapp-d0io.onrender.com"明确设置SNI主机名;同时可调整安全级别为AT+QSSLCFG="seclevel",1,1,部分服务器对低安全级别的SSL连接会返回错误。 - URL长度匹配错误:
AT+QHTTPURL=48,120中的48是URL的字符长度,需确认实际请求的完整URL(包括协议、域名、接口路径)的字符数是否与该值完全一致,长度不匹配会导致URL截断或解析错误,服务器无法识别请求路径从而返回400。
内容的提问来源于stack exchange,提问作者Charumathy Ma
相关产品推荐
相关产品推荐

