Question
Can't Send POST Request
I'm trying to send POST request to my docker & node.js based server. But i cant send. Im using STM32F103RCT6 & ESP8266 (ESP-01)
void connectWifi() {
HAL_UART_Transmit(&huart1, (uint8_t *)"AT\r\n", strlen("AT\r\n"), HAL_MAX_DELAY);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, (uint8_t *)"AT+RST\r\n", strlen("AT+RST\r\n"), HAL_MAX_DELAY);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, (uint8_t *)"AT+CWMODE=1\r\n", strlen("AT+CWMODE=1\r\n"), HAL_MAX_DELAY);
HAL_Delay(1000);
char wifiCommand[50];
sprintf(wifiCommand, "AT+CWJAP=\"%s\",\"%s\"\r\n", WIFI_SSID, WIFI_PASSWORD);
HAL_UART_Transmit(&huart1, (uint8_t *)wifiCommand, strlen(wifiCommand), HAL_MAX_DELAY);
HAL_Delay(2000);
char response[100];
HAL_UART_Receive(&huart1, (uint8_t *)response, sizeof(response), HAL_MAX_DELAY);
}
void sendHTTPRequest() {
char tcpCommand[50];
sprintf(tcpCommand, "AT+CIPSTART=\"TCP\",\"%s\",%d\r\n", SERVER_IP, SERVER_PORT);
HAL_UART_Transmit(&huart1, (uint8_t *)tcpCommand, strlen(tcpCommand), HAL_MAX_DELAY);
HAL_Delay(1000);
char httpCommand[200];
char postData[200];
sprintf(postData, "{\"machineID\":\"%s\",\"machineData\":\"%s\"}", MACHINE_ID, MACHINE_DATA);
sprintf(httpCommand, "AT+CIPSEND=%d\r\n", strlen(postData) + 94);
HAL_UART_Transmit(&huart1, (uint8_t *)httpCommand, strlen(httpCommand), HAL_MAX_DELAY);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1, (uint8_t *)"POST /api/machine/updateMachineData HTTP/1.1\r\n",
strlen("POST /api/machine/updateMachineData HTTP/1.1\r\n"), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1, (uint8_t *)"Host: x.x.x.x:3000\r\n", strlen("Host: x.x.x.x:3000\r\n"), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1, (uint8_t *)"Content-Type: application/json\r\n",
strlen("Content-Type: application/json\r\n"), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1, (uint8_t *)"Content-Length: ", strlen("Content-Length: "), HAL_MAX_DELAY);
char contentLength[4];
sprintf(contentLength, "%d\r\n", strlen(postData));
HAL_UART_Transmit(&huart1, (uint8_t *)contentLength, strlen(contentLength), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1, (uint8_t *)"\r\n", strlen("\r\n"), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart1, (uint8_t *)postData, strlen(postData), HAL_MAX_DELAY);
HAL_Delay(2000);
char responseBuffer[20];
memset(responseBuffer, 0, sizeof(responseBuffer));
HAL_UART_Receive(&huart1, (uint8_t *)responseBuffer, sizeof(responseBuffer) - 1, HAL_MAX_DELAY);
if (strncmp(responseBuffer, "HTTP/1.1 200 OK", 15) == 0) {
lcd_print(2, 1, "İşlem Başarılı");
} else {
lcd_print(2, 1, "Hata Oluştu");
}
}
static void MX_USART1_UART_Init(void)
{
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */
/* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
