You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino通过SIM800L向服务器发送数据时出现HTTP 603错误

解决SIM800L发送GET请求返回603错误的问题

兄弟,你碰到的+HTTPACTION: 0,603,0错误,在SIM800系列模块里其实是个挺典型的网络连接或域名解析问题。结合你的串口日志和代码,我整理了几个能快速排查和修复的方向:

1. 先盯紧HTTP/HTTPS的坑!

看你的串口返回里的请求URL是https://system.fabricaid.me/d.php?i=1&f=2,但你代码里定义的HTTPserver是http://--------.me——划重点:普通版SIM800L根本不支持HTTPS!它只能处理HTTP请求。如果你的服务器强制要求HTTPS访问,模块直接就懵了,返回603是必然的。

修复办法:

  • 先确认你的服务器是否允许HTTP访问,如果可以,把代码里的HTTPserver改成不带s的HTTP地址;
  • 如果服务器必须用HTTPS,那要么换支持HTTPS的模块(比如SIM800H、SIM808),要么在服务器端整个HTTP转HTTPS的代理层。

2. 测试DNS解析是否正常

模块连不上服务器,大概率是域名解析失败。你可以直接给模块发AT指令测试:

AT+CDNSGIP="system.fabricaid.me"

如果返回ERROR或者没给出正确的IP,那就是解析的问题,可能是这两个原因:

  • APN设置缺了DNS:你用的APN是touch,有些运营商的APN需要手动指定DNS,试试加这两条指令:
    AT+SAPBR=3,1,"DNS1","8.8.8.8"
    AT+SAPBR=3,1,"DNS2","8.8.4.4"
    
  • 信号太差:用AT+CSQ查信号强度,返回的第一个数值得大于10才够稳定,低于的话赶紧调整天线位置,或者换个信号好的地方试试。

3. 检查URL拼接有没有暗坑

看你代码里拼URL的逻辑:

GSM_serial.print("AT+HTTPPARA=\"URL\",");
GSM_serial.print(HTTPserver); // 定义为#define HTTPserver "http://--------.me"
GSM_serial.print(HTTPurl); // 定义为#define HTTPurl "/d.php?"
GSM_serial.print(message); // message内容为i=1&f=2,完整URL为http://---------.me/d.php?i=1&f=2
GSM_serial.print("\"\r\n");

但串口返回的却是HTTPS,说明你实际的HTTPserver宏定义可能写错了?先确认这个宏的内容是不是真的是HTTP开头。另外,有些模块对&这类特殊字符敏感,你可以试试把message里的&换成URL编码的%26,也就是i=1%26f=2,看看能不能正常请求。

4. 再确认GPRS连接真的没问题

虽然你的日志里AT+CGATT=1和AT+SAPBR=1,1都返回OK,但咱得再较真一下:

  • 发AT+CGATT?,确认返回+CGATT: 1,说明真的附着到网络了;
  • 发AT+SAPBR=2,1,如果返回+SAPBR: 1,1,"xxx.xxx.xxx.xxx",说明模块拿到了IP,要是第二个参数是0,那就是GPRS没连上,得检查APN的用户名密码(有些运营商的APN需要这个,比如AT+SAPBR=3,1,"USER","xxx"和AT+SAPBR=3,1,"PWD","xxx")。

5. 给请求多留点儿时间

你代码里AT+HTTPACTION=0之后只等了6秒,有些慢网络环境下,6秒可能不够完成整个请求流程,试试把延迟改成10秒:

GSM_serial.print("AT+HTTPACTION=0\r\n"); updateSerial(); delay(10000);

最后建议你从最简单的请求开始测,比如先请求http://example.com,确认模块能返回200,再逐步换成你的服务器地址和参数,这样更容易定位问题。

内容的提问来源于stack exchange,提问作者Hussam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:36:37