esp32 post 提交json数据登录网站

ps:用于自己的学习记录,刚开始接触esp32和http协议,对很多细节不理解,只能跟着一些例程做自己摸索一下,误打误撞成功了。

 在用esp32登录一个网址的时候一直返回302,意思是需要重定向,后来猛的一想,可能是需要登录上一个界面,才能到达下一个界面。然后我就一直尝试登录网址。

一开始我使用的方式是post提交表单数据,提交成功,但是在get本身的网址的时候一直返回-11,后来琢磨了好久都没搞明白为什么提交表单数据不行,猜测可能是那个网址不接受表单数据或者是需要什么权限,后来提交json数据试了一下,竟然成功了。下面是代码,写的不是特别好,不过意思是对的。

 StaticJsonDocument<200> jsondata;
    jsondata["username"] = "username";
    jsondata["password"] = "password";
    String jsonString;
    serializeJson(jsondata, jsonString);// 将JSON对象转换为字符串

    // 设置请求标头为application/json
    http.addHeader("Content-Type", "application/json");

    int httpResponseCode = http.POST(jsonString);
    if (httpResponseCode != HTTP_CODE_OK) 
    {
      Serial.println(httpResponseCode);
    }

    else
    {
        Serial.printf("POST Success!\n");
    }

可以成功提交json数据,但是有时无法提交成功,再提交一次就好了,可以在加一些逻辑判断,不成功就继续提交,这里仅作记录。

在提交数据之前先登录网址,下面是代码,形参改成 网址字符串就行。 

void HTTP_Connection(const char* url)
{
      int connect_cnt=0;
     if((WiFi.status() == WL_CONNECTED)) 
     {
        //连接网址
        Serial.printf("Connecting to Http...");
        http.begin(url);        
        int httpcode = http.GET(); // 发起GET请求
        if(httpcode==200)
        {
             Serial.printf("success!\n");
        }
        while((httpcode!=200)&&(connect_cnt!=5))
        {
          connect_cnt++;
          http.begin(url);
          httpcode = http.GET();
          Serial.printf("httpcode:%d\n",httpcode); 
          if(httpcode==200)
          {
             Serial.printf("success!\n");
          }        
        }        
     }
     else
     {
         Serial.printf("NO WIFI\n");
     }   
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值