+HTTPACTION= 0,200,351 不能 post 数据

+HTTPACTION= 0,200,351 can't post data

我正在使用连接到 Arduino 的 Sim800L 模块,并尝试使用 AT 命令将数据发送到网络服务器。 通常,通过执行发送程序(手动,通过在 Arduino 串行监视器上编写每一行代码)以将数据上传到 table,答案是:0,200,35 或 0,200,36,并且它完美的作品。 通过下面的代码,答案总是0,200,351, 0,200,371 ...通过读取SIM800L模块的数据sheet,命令回复的最后一个数字,参考<datalen> ,而200对应一个'OK'。但是,当我收到那个 3xx 代码时,什么也没有发布。

void post_mySQL(){
      
    String url = get_url();
    execute_AT("AT+CFUN=1");
    execute_AT("AT+CGATT=1");
    execute_AT("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
    execute_AT("AT+SAPBR=3,1,\"APN\",\"TM\"");
    execute_AT("AT+SAPBR=3,1,\"USER\",\"\"");
    execute_AT("AT+SAPBR=3,1,\"PWD\",\"\"");
    execute_AT("AT+SAPBR=0,1");
    execute_AT("AT+SAPBR=1,1");
    execute_AT("AT+SAPBR=2,1");
    execute_AT("AT+HTTPINIT");
    execute_AT("AT+HTTPPARA=\"CID\",1");
    execute_AT("AT+HTTPPARA=\"URL\","+url);
    execute_AT("AT+HTTPACTION=0");
    //execute_AT("WAIT=6");
    execute_AT("AT+HTTPTERM");
    execute_AT("AT+CIPSHUT");
}
    
String execute_AT(String AT){
    boolean answered = false;
    String response;
    Serial1.println(AT);
    delay(4000);
    do{
        if(Serial1.available() > 0){
            answer = true;
            response = Serial1.readString();
        }
    }while(answer == false);
    
    Serial.println(response);
    return response;
}

有人知道为什么会有这样的差异吗?

datalen 太高,因为 sim800l 缓冲区总是满的,通过定义解决:

#define SERIAL_BUFFER_SIZE 256
#define SERIAL1_BUFFER_SIZE 256