stm32duino / STM32Ethernet

Arduino library to support Ethernet for STM32 based board
156 stars 43 forks source link

Http Post Error #22

Closed Rajkumar181 closed 5 years ago

Rajkumar181 commented 5 years ago

Hi Team,

I am trying to do http request. And I am able to do POST request but only one time second time getting fail. even i am trying for re-connection also. I attached my code please review once.

HttpStat send_devstatus_req(char *dvstatus, char *gwaddr)
{

  int timeout = 0;
  if (Ethernet.maintain() == 0)
  {

    memset(txbuff, 0, sizeof(txbuff));
    sprintf(&txbuff[0], "POST %s HTTP/1.1\r\nHost: %s\r\nAccept: application/json\r\nContent-Type: application/json\r\ncharsets: utf-8\r\nContent-length: %d\r\n\r\n%s", statUpdate, host, (int)strlen(dvstatus), dvstatus);

    if (!client.connected())
    { 
      IPAddress serip(10, 10, 72, 161);
      client.connect(serip, 8181);
      while(!client.connected())
      {
        delay(1000);
      }
      Serial.println("connected");
    } else
    {
      printf("DEBUG: HTTP STRING %s len[%d]\n", txbuff, strlen(txbuff));
      if (true)
      {
        Serial.println("connected");

        client.write(txbuff, strlen(txbuff));
        printf("Send done\n");
        while (timeout < 1500)
        {
          if (client.available()) {
            char c = client.read();
            Serial.print(c);
            timeout = 0;
          } else
          {
            timeout++;
          }
        }
        client.stop();
      } else {
        client.stop();
        return HTTP_SOCK_ERROR;
      }
    }
  } else
  {
    return HTTP_SOCK_ERROR;
  }

}