使用 AT 命令 实现ssl 访问 http,爆出705.
以下为at命令:
0. newWork4g.print(“+++”);
newWork4g.flush(); //退出 透传。
- newWork4g.println(“AT+QICLOSE=0”); //关闭Socket连接
- newWork4g.println(“AT”); //发送AT测试。
- newWork4g.println(“AT+QICSGP=1,1,"cmnet","","",1”); //设置 QICSGP
4,newWork4g.println(“AT+CGATT?”); // 查询PS域附着状态
5,newWork4g.println(“AT+CGREG?”); // 查询网络注册状态 - newWork4g.println(“AT+QIACT?”);
- newWork4g.println(“AT+QHTTPCFG="sslctxid",1”);
8.newWork4g.println(“AT+QSSLCFG="sslversion",1,1”);
9.newWork4g.println(“AT+QSSLCFG="ciphersuite",1,0x0005”); - newWork4g.println(“AT+QSSLCFG="seclevel",1,0”);
11,String urlCmd = “AT+QHTTPURL=” + String(getDevUpdateAddress.length()) + “,” + String(300);
newWork4g.println(urlCmd); - newWork4g.println(“AT+QHTTPGET=80”);
- newWork4g.println(“AT+QHTTPREAD=” + String(HTTP_TIMEOUT));
14.读取 内容:
case STATE_READ_HTTP_RESPONSE:
if (responseBuffer.length() > 0)
{
vTaskDelay(pdMS_TO_TICKS(500)); // 减少延迟
Serial.println("获取到固件URL11111111111111111: " + responseBuffer);
// 1. 检查是否为完整HTTP响应
int headerEnd = responseBuffer.indexOf("\r\n\r\n");
if (headerEnd != -1)
{
// 2. 提取HTTP主体(跳过头部)
String httpBody = responseBuffer.substring(headerEnd + 4);
// 3. 清除模组添加的控制信息
httpBody.replace("OK", "");
httpBody.trim();
Serial.println("获取到固件URL: " + httpBody);
// 6. 清空缓冲区
responseBuffer = "";
}
else if (millis() - lastCmdTime > (HTTP_TIMEOUT * 1000))
{
Serial.println("HTTP响应不完整");
state = STATE_ERROR;
}
}
break;
日志结果为:成功退出透传模式
关闭Socket连接
QICLOSE_AT OK
发送AT测试
AT… OK
设置APN: cmnet
APN配置成功
检查PS域附着状态…
PS域已附着
检查网络注册状态…
网络已注册
检查PDP激活状态…
PDP已激活,跳过激活步骤
发送设置SSLCTXID
设置SSLCTXID–成功
发送设置sslversion
设置SSLVERSION版本–成功
发送设置sslversion
设置CIPHERSUITE–成功
发送设置sslversion
设置SECLEVE–成功
设置URL 长度和超时时间78设置URL参数
准备发送URL
发送 URL: https://************************getDevUpdatePackage
URL设置成功
发送HTTP GET请求
GET 请求成功,准备读取数据11111111111
发送读取文件请求
获取到固件URL11111111111111111: : 705
获取到固件URL11111111111111111: : 0,operate successfully
OK
获取到固件URL:
获取到固件URL11111111111111111: : 0,operate successfully
OK
问题点为705 是如何造成的?这个问题应该如何解决?