HTTP Post Request Gives Response Code 500 on BG96 using SDK2 Threadx

Hi All,
I am working on BG96 using Quecopen Solution i want to post some data to HTTP server. I am getting 500 response code . my code snippet is

/*

  • return

  • 0: No error

  • -1: create SSL context failed

  • -2: SSL config failed

  • -3: create HTTP session failed

  • -4: HTTP connect failed

  • -5: HTPP request failed

*/

int http_download(char* host, uint16 port, uint8* file_name)

{

qapi_Status_t ret = -1;

uint8 reconnect_count = 0;

#ifdef QUECTEL_HTTPS_SUPPORT

SSL_INST http_ssl;

#endif

/* Start HTTPc service */

qapi_Net_HTTPc_Start();

memset(&http_session_policy, 0, sizeof(http_session_policy_t));

#ifdef QUECTEL_HTTPS_SUPPORT

if (ssl_ctx_id)

{

    /* config object and certificate */

    if (0 != http_ssl_config(&http_ssl))

    {

        SALVATOR_UART_DBG("ERROR: Config ssl object and certificates error");

        

    }

    

    /* create a SSL session */

    ssl_obj_hdl = http_ssl.sslCtx;

    http_ssl.sslCon = qapi_Net_SSL_Con_New(http_ssl.sslCtx, QAPI_NET_SSL_TLS_E);

    if (http_ssl.sslCon == QAPI_NET_SSL_INVALID_HANDLE)

    {

        SALVATOR_UART_DBG("ERROR: Unable to create SSL context");

        return -1;

    }

    

    if (QAPI_OK != qapi_Net_SSL_Configure(http_ssl.sslCon, &http_ssl.config))

    {

        SALVATOR_UART_DBG("ERROR: SSL configure failed");

        return -2;

    }

    http_hadle = qapi_Net_HTTPc_New_sess(20000, http_ssl.sslCtx, http_client_cb, NULL, 1024, 1024);

    ret = qapi_Net_HTTPc_Configure_SSL(http_hadle, &http_ssl.config);

    if(ret != QAPI_OK)

    {

        SALVATOR_UART_DBG("Start HTTPS connection, SSL config ret[%d]", ret);

        return -2;

    }

}

else

{

    http_hadle = qapi_Net_HTTPc_New_sess(20000, 0, http_client_cb, NULL, 1024, 1024);

}

#else

http_hadle = qapi_Net_HTTPc_New_sess(20000, 0, http_client_cb, NULL, 5 * 1024, 5 * 1024);

#endif /* QUECTEL_HTTPS_SUPPORT */

http_session_policy.session_state = HTTP_SESSION_INIT;

if ( http_hadle == NULL)

{

    SALVATOR_UART_DBG("qapi_Net_HTTPc_New_sess ERROR");

    return -3;

}

// qapi_Net_HTTPc_Pass_Pool_Ptr(http_hadle, byte_pool_salvator);



do

{

    ret = qapi_Net_HTTPc_Connect(http_hadle, host, port);

    if (ret != QAPI_OK)

    {

        reconnect_count++;

        SALVATOR_UART_DBG("qapi_Net_HTTPc_Connect ERROR ret:%d, re-connect times:%d",ret,reconnect_count);

        if(reconnect_count >= HTPP_MAX_CONNECT_RETRY)

        {

            return -4;

        }

        qapi_Timer_Sleep(3, QAPI_TIMER_UNIT_SEC, true);

    }

    else

    {

        SALVATOR_UART_DBG("qapi_Net_HTTPc_Connect success :%d", ret);

        break;

    }

} while (1);

http_session_policy.session_state = HTTP_SESSION_CONN;



// http_post_body(Tx_Buffer);

qapi_Net_HTTPc_Clear_Header(http_hadle);

qapi_Net_HTTPc_Add_Header_Field(http_hadle, "Content-Type", "application/x-www-form-urlencoded");

// qapi_Net_HTTPc_Add_Header_Field(http_hadle, "Content-Length", strlen(Tx_Buffer)); // Not sure if required    

// qapi_Net_HTTPc_Set_Body(http_hadle, "{\"PacketType\":\"Alert\",\"Payload\":{\"TriggeredBy\":", (uint32_t)sizeof("{\"PacketType\":\"Alert\",\"Payload\":{\"TriggeredBy\":"));

http_post_body((char *)Tx_Buffer);

/* get response content */

ret = qapi_Net_HTTPc_Request(http_hadle, QAPI_NET_HTTP_CLIENT_POST_E, (char*)file_name); 

if (ret != QAPI_OK)

{

    SALVATOR_UART_DBG("qapi_Net_HTTPc_Request ERROR :%d",ret);

    return -5;

}


return 0;

}

void http_post_body(char *TxBuffer)

{

// char TxBuffer[240] = {0};

uint16_t len, poststatus;

char DeviceId[20] = "862785044205279";

uint32_t in_sosType = 1;

static char sos_lat[16]={0}, sos_long[16]={0};

static bool CellIdLocFlag = 0;

    strncpy(TxBuffer, "{\"PacketType\":\"Alert\",\"Payload\":", sizeof("{\"PacketType\":\"Alert\",\"Payload\":"));

    strncat(TxBuffer, "{\"TriggeredBy\":", sizeof("{\"TriggeredBy\":"));

    len = strlen(TxBuffer);

    TxBuffer[len]=48+in_sosType;

    TxBuffer[len+1]='\0';

    strncat(TxBuffer, ",", sizeof(","));

    strncat(TxBuffer, "\"DeviceId\":\"", sizeof("\"DeviceId\":\""));

    strncat(TxBuffer, DeviceId, sizeof(DeviceId));

    strncat(TxBuffer, "\",", sizeof("\","));

    strncat(TxBuffer, "\"Lat\":", sizeof("\"Lat\":"));

    strncat(TxBuffer, sos_lat, sizeof(sos_lat));

    strncat(TxBuffer, ",\"Long\":", sizeof(",\"Long\":"));

    strncat(TxBuffer, sos_long, sizeof(sos_long));

    strncat(TxBuffer, ",\"LocStatus\":", sizeof("\"LocStatus\":"));

    uint16_t l1 = strlen(TxBuffer);

    itoa(CellIdLocFlag, &TxBuffer[l1], 10);

    strncat(TxBuffer, ",\"Status\":\"Active\"", sizeof(",\"Status\":\"Active\""));

    strncat(TxBuffer, "}}", sizeof("}}"));

    // strncpy(TxBuffer, "{\"PacketType\":\"Alert\",\"Payload\":", sizeof("{\"PacketType\":\"Alert\",\"Payload\":"));

    // strncat(TxBuffer, "{\"TriggeredBy\":", sizeof("{\"TriggeredBy\":"));

    // len = strlen(TxBuffer);

    // TxBuffer[len]=48+in_sosType;

    // TxBuffer[len+1]='\0';

    // strncat(TxBuffer, ",", sizeof(","));

    // strncat(TxBuffer, "\"DeviceId\":\"", sizeof("\"DeviceId\":\""));

    // strncat(TxBuffer, DeviceId, sizeof(DeviceId));

    // strncat(TxBuffer, "\",", sizeof("\","));

    // strncat(TxBuffer, "\"Status\":\"Inactive\"", sizeof("\"Status\":\"Inactive\""));

    // strncat(TxBuffer, "}}", sizeof("}}"));

SALVATOR_UART_DBG("\r\n%s", TxBuffer);    

qapi_Net_HTTPc_Set_Body(http_hadle, (const char *)TxBuffer, (uint32_t)sizeof(TxBuffer));

}

void http_client_cb(void* arg, int32 state, void* http_resp)

{

boolean ret_val = FALSE;

qapi_Net_HTTPc_Response_t * resp = NULL;

resp = (qapi_Net_HTTPc_Response_t *)http_resp;

http_session_policy.session_state = HTTP_SESSION_SOS_RESPONSE;

SALVATOR_UART_DBG("\r\nhttp_client_cb:%x,%ld,len:%lu,code:%lu,%s\r\n",arg,state,resp->length,resp->resp_Code,resp->data);

}

Response from the server:

host:dev.salvator.com.au,port:3000,source:/device/sosqapi_Net_HTTPc_Connect success :0
{“PacketType”:“Alert”,“Payload”:{“TriggeredBy”:1,“DeviceId”:“862785044205279”,“Lat”:,“Long”:,“LocStatus”:0,“Status”:“Active”}
http_client_cb:0,1,len:1007,code:500,

Error </he http_client_cb:0,0,len:1992,code:500,ter/index.js:275:10)
   at Function.handle (/home/ubuntu/salvator/node_mod

http 500 is a public err code for http protocol , pls refer to the below items:

HTTP 500 - internal server error

Http 500.100 - internal server error - ASP error

Http 500-11 server shutdown

Http 500-12 application restart

Http 500-13 - server too busy

Http 500-14 - invalid application

Http 500-15 – global.asa request not allowed

for the detail reason , pls email to support@quectel.com , we need the QXDM log for more analysis .