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

SIM5320e开发板HTTPS GET请求失败,寻求关键解决步骤

SIM5320e 3G模块无法发起HTTP GET请求,发送字符数始终为0

我目前在用SIM5320e 3G开发板,搭配CoolTerm和PL203串口转USB连接器,目标是实现HTTP/HTTPS GET请求,之后整合到单片机项目里,通过EDGE/GPRS/3G把远程传感器数据传到互联网。但现在一直没法成功发起GET请求,查了资料(除了复杂的数据手册)还是没找到关键问题。

以下是带注释的典型终端输出:

AT OK // 模块正常工作
AT+CGSOCKCONT=1,"IP","giffgaff.com" // 设置APN(使用英国Giffgaff SIM卡)
OK
AT+CSOCKSETPN=1 // 参考应用笔记执行此步骤,具体作用不明
OK
AT+CIPMODE=0 // 同上
OK
AT+NETOPEN=,,1
Network opened OK // 通过GPRS打开网络连接
AT+IPADDR
+IPADDR: 10.146.130.153
OK // 成功获取网络地址
AT+CHTTPSSTART
OK // 启动HTTPS/HTTP协议栈
AT+CHTTPSOPSE="www.iforce2d.net", 80,1
OK // 与主机80端口建立连接
AT+CHTTPSSEND=23 // 请求发送23字符数据
>GET /test.php HTTP/1.1 // 目标页面存在,显示UTC时间
OK
AT+CHTTPSEND
OK
+CHTTPSEND: 0 // 提示发送无问题,但实际发送字符数为0
AT+CHTTPSEND? // 查询发送状态
+CHTTPSEND: 0 // 确实未发送任何字符!
OK
+CHTTPSNOTIFY: PEER CLOSED
AT+CHTTPSRECV? // 查询是否收到数据
+CHTTPSRECV: LEN,0 // 未收到任何数据!
OK

请问我遗漏了哪些关键步骤?感谢您的关注。


解决思路与关键遗漏步骤

你已经搞定了基础的网络连接,但几个细节没处理到位,导致请求根本没真正发出去,我帮你拆解一下:

1. HTTP请求格式不完整,且缺少结束符

这是最核心的问题:

  • 你的GET请求只有GET /test.php HTTP/1.1,但HTTP/1.1协议强制要求必须包含Host头,而且每一行头信息后要换行,最后需要两个连续的换行表示请求结束(GET请求没有请求体,所以直接两个换行即可)。完整的请求内容应该是:
    GET /test.php HTTP/1.1
    Host: www.iforce2d.net
    
    
  • 另外,当模块返回>提示符等待你输入请求内容时,输入完内容后不能直接按OK,必须发送Ctrl+Z(对应ASCII码0x1A)作为结束符,模块才会把输入的内容发送出去。你现在直接按OK,模块没收到结束信号,自然认为没有数据要发送,就出现了+CHTTPSEND: 0的情况。

2. 混淆了HTTP和HTTPS的端口与命令

你启动了AT+CHTTPSSTART(HTTPS协议栈),但连接的是80端口——这是HTTP的默认端口,HTTPS应该用443端口。如果只是测试HTTP请求,建议直接用AT+HTTPSTART对应的HTTP命令集,操作更简单;如果要发HTTPS请求,把端口改成443,还可以临时关闭证书校验(用AT+CHTTPSSET=1设置不校验)来简化测试。

3. 简化命令流程,避免不必要的参数

你提到AT+CSOCKSETPN=1和AT+CIPMODE=0是参考应用笔记但不清楚作用,其实用HTTP/HTTPS命令集的话,这些参数模块会自动处理,不用手动设置。你可以试试更简洁的流程:

AT // 测试模块连通性
OK
AT+CGSOCKCONT=1,"IP","giffgaff.com" // 设置APN
OK
AT+NETOPEN=,,1
Network opened OK
AT+IPADDR // 确认获取到IP
+IPADDR: xxx.xxx.xxx.xxx
OK
AT+HTTPSTART // 启动HTTP协议栈
OK
AT+HTTPPARA="URL","http://www.iforce2d.net/test.php" // 直接设置完整请求URL
OK
AT+HTTPACTION=0 // 发起GET请求(0代表GET方法)
// 等待返回,比如+HTTPACTION: 0,200,xxx 表示请求成功,状态码200
AT+HTTPREAD // 读取服务器响应内容

这个流程比用CHTTPS命令更直观,也更容易排查问题。

4. 提前验证基础状态

在发起请求前,建议加几个命令确认模块状态:

  • AT+CSQ:检查信号强度,返回值比如+CSQ: 20,99,第一个值大于10就表示信号足够。
  • AT+CREG?:检查网络注册状态,返回+CREG: 0,1或+CREG: 0,5表示注册成功(1是本地注册,5是漫游注册)。

按照这些步骤调整后,应该就能成功发起GET请求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:33