SIM808 BAD POST REQUEST ERROR

Hello Guys. Please, I need help with debugging communications through a SIM808 Device I’m using alongside an Arduino Uno R3 as a prototype for a tracking device. The sketch is provided below.

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
 

#define mydelay 10000
DFRobot_SIM808 sim808(&Serial);
char http_cmd[200] = "POST /api/tracker/ HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: 72\r\nHost: haulr.herokuapp.com\r\n\r\n{ \"trackerId\": \"1111\",\"weight\": ";
char mybuffer[145];
int count = 142;
long current = 0;
String longitude, latitude;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.begin(9600);

//  //******** Initialize sim808 module *************
  while(!sim808.init()) {
      delay(1000);
      Serial.print("Sim808 init error\r\n");
  }
  delay(3000);  
  Serial.println(sizeof(http_cmd));
    
  //*********** Attempt DHCP *******************
  while(!sim808.join(F("cmnet"))) {
      Serial.println("Sim808 join network error");
      delay(2000);
  }

  //************ Successful DHCP ****************
  Serial.print("IP Address is ");
  Serial.println(sim808.getIPAddress());
    //************* Turn on the GPS power************
  if( sim808.attachGPS())
      Serial.println("Open the GPS power success");
  else 
      Serial.println("Open the GPS power failure");
  current = millis();
}

bool mylocation(){
  bool control = LOW;
  long prevfix = millis();
  Serial.println("im here");
  while(millis() - prevfix < 3000){
    if (1 > 0){
      Serial.println("got a fix");
      latitude = String(sim808.GPSdata.lat,6);
      longitude = String(sim808.GPSdata.lon,6);
      control = HIGH;
      break;
    } 
  }
  if(control){
    delay(1000);
     sim808.detachGPS();
  }
  return control;
}

void loop() {

  // put your main code here, to run repeatedly: 
  if (millis() - current > mydelay){
  sim808.attachGPS();
  bool getloc = mylocation();
  if (getloc){
    float weight = 10;
    if (weight <= 0) weight = 0.00;
    latitude = (String) weight + ",\"location\": \"" + latitude + "," + longitude + "\" }";
    int cnt = count;
    for (int i = 0; i <= latitude.length(); i++){
     http_cmd[cnt++] = latitude[i];
    }
    postData();
  }
  current = millis();
 }
}
void postData(){
  delay(1000);
  if (!sim808.is_connected()){
  label:
  //*********** Establish a TCP connection ************
  if(!sim808.connect(TCP,"haulr.herokuapp.com", 80)) {
      Serial.println("Connect error");
      goto label;
  }else{
      Serial.println("Connect haulr.herokuapp.com success");
  }
 }

  //*********** Send a POST request *****************
  Serial.println("waiting to fetch...");
  sim808.send(http_cmd, sizeof(http_cmd) - 1);
  while (true) {
      int ret = sim808.recv(mybuffer, sizeof(mybuffer)-1);
      if (ret <= 0){
          Serial.println("fetch over...");
          break; 
      }
      mybuffer[ret] = '\0';
      Serial.print("Recv: ");
      Serial.print(ret);
      Serial.print(" bytes: ");
      Serial.println(mybuffer);
      break;
  }

  //************* Close TCP or UDP connections **********
  sim808.close();

  //*** Disconnect wireless connection, Close Moving Scene *******
  sim808.disconnect();
}

After uploading the sketch, I got varying responses from the SIM808. After posting the data, I checked the database for updates and got none. I have used POST MAN severally to update the database but every other update (data) sent from the device is not stored. Kindly find the snippets of the responses received below. This is the only bit left at this stage of the prototyping phase and my team needs me to resolve this very quickly.

Sim808 init error
AT
AT+CFUN=1
AT+CPIN?
182
AT+CSTT="cmnet","",""
AT+CIICR
AT+CIFSR
IP Address is 10.31.234.248
AT+CGNSPWR=1
AT+CGNSTST=1
Open the GPS power success
AT+CGNSPWR=1
AT+CGNSTST=1
im here
got a fix
AT+CGNSPWR=0
AT+CIPSTATUS
AT+CIPSTART="TCP","haulr.herokuapp.com",80
Connect haulr.herokuapp.com success
waiting to fetch...
AT+CIPSEND=181
POST /api/tracker/ HTTP/1.1
Content-Type: application/json
Content-Length: 70
Host: haulr.herokuapp.com

{ "trackerId": "1111","weight": 10.00,"location": "2.511895,7.161656" } Recv: 144 bytes: HTTP/1.1 400 Bad Request
Server: Cowboy
Connection: keep-alive
X-Powered-By: Express
Content-Security-Policy: default-src 'self'
X-Content-
AT+CIPSTATUS
AT+CIPSHUT
AT+CGNSPWR=1
AT+CGNSTST=1
im here
got a fix
AT+CGNSPWR=0
AT+CIPSTATUS
AT+CIPSTART="TCP","haulr.herokuapp.com",80
Connect haulr.herokuapp.com success
waiting to fetch...
AT+CIPSEND=181
POST /api/tracker/ HTTP/1.1
Content-Type: application/json
Content-Length: 70
Host: haulr.herokuapp.com

{ "trackerId": "1111","weight": 10.00,"location": "2.511895,7.161656" } fetch over...
AT+CIPSTATUS
AT+CIPSHUT
AT+CGNSPWR=1
AT+CGNSTST=1
im here
got a fix
AT+CGNSPWR=0
AT+CIPSTATUS
AT+CIPSTART="TCP","haulr.herokuapp.com",80
Connect haulr.herokuapp.com success
waiting to fetch...
AT+CIPSEND=181
POST /api/tracker/ HTTP/1.1
Content-Type: application/json
Content-Length: 70
Host: haulr.herokuapp.com

{ "trackerId": "1111","weight": 10.00,"location": "2.511895,7.161656" } Recv: 144 bytes: HTTP/1.1 400 Bad Request
Server: Cowboy
Connection: keep-alive
X-Powered-By: Express
Content-Security-Policy: default-src 'self'
X-Content-
AT+CIPSTATUS
AT+CIPSHUT
AT+CGNSPWR=1
AT+CGNSTST=1
im here
got a fix
AT+CGNSPWR=0
AT+CIPSTATUS
AT+CIPSTART="TCP","haulr.herokuapp.com",80
Connect haulr.herokuapp.com success
waiting to fetch...
AT+CIPSEND=181
POST /api/tracker/ HTTP/1.1
Content-Type: application/json
Content-Length: 70
Host: haulr.herokuapp.com

{ "trackerId": "1111","weight": 10.00,"location": "2.511895,7.161656" } Recv: 144 bytes: HTTP/1.1 400 Bad Request
Server: Cowboy
Connection: keep-alive
X-Powered-By: Express
Content-Security-Policy: default-src 'self'
X-Content-
AT+CIPSTATUS
AT+CIPSHUT

While troubleshooting, I later observed that three of the sent posts actually received responses stated as “Bad Request” alongside some other headers. I don’t know what the issue could be. Please, kindly advise me on what steps I need to take. Thanks.