400 bad request при обращении к api на laravel

157
20 февраля 2022, 13:40

Есть приложение на Laravel. К нему прописано API по которому с микроконтроллера отсылаются данные методом Post и делается запись в базу. Через Postman все работает

Сайт залит на хостинг с Plesk, ничего не настраивал - нет навыков администрирования.

При запросе с микроконтроллера возвращает ошибку 400

22:35:30.686 -> w=1&c=11
22:35:40.787 -> 
22:35:40.787 -> HTTP/1.1 400 Bad Request
22:35:40.822 -> Date: Tue, 14 Jan 2020 20:35:40 GMT
22:35:40.857 -> Server: Apache
22:35:40.857 -> Content-Length: 226
22:35:40.892 -> Connection: close
22:35:40.934 -> Content-Type: text/html; charset=iso-8859-1
22:35:41.000 -> 
22:35:41.000 -> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
22:35:41.000 -> <html><head>
22:35:41.033 -> <title>400 Bad Request</title>
22:35:41.079 -> </head><body>
22:35:41.079 -> <h1>Bad Request</h1>
22:35:41.079 -> <p>Your browser sent a request that this server could not understand.<br />
22:35:41.182 -> </p>
22:35:41.182 -> </body></html>

роуты laravel обычные (напомню, код работает через Postman)

Route::post('/v1/attr/{id}','API\WorkdayController@store');

Могу контроллер показать, но там неважная логика работы с базой. Обрабатывается Request. Со стороны ардуино все тоже должно быть рабочим, кроме обращения к моему API Подключена библиотека inetGSM и inet.cpp с простой функцией

inet.httpPOST("antosipos.com.es", 80, "/api/v1/attr/c019999a", (const char*)buf, msg, 50);

Где в buf передаваемые параметры (w=1&c=11 или {"w":"1","c":"11"})

сама функция (не уверен что это полезная информация):

int InetGSM::httpPOST(const char* server, int port, const char* path, const char* parameters, char* result, int resultlength)
{
  boolean connected=false;
  int n_of_at=0;
  char itoaBuffer[8];
  int num_char;
  char end_c[2];
  end_c[0]=0x1a;
  end_c[1]='\0';
  while(n_of_at<3){
      if(!connectTCP(server, port)){
        #ifdef DEBUG_ON
            Serial.println("DB:NOT CONN");
        #endif  
            n_of_at++;
      }
      else{
        connected=true;
        n_of_at=3;
    }
  }
  if(!connected) return 0;
  gsm.SimpleWrite("POST ");
  gsm.SimpleWrite(path);
  gsm.SimpleWrite(" HTTP/1.1\nHost: ");
  gsm.SimpleWrite(server);
  gsm.SimpleWrite("\n");
  gsm.SimpleWrite("Content-Type: application/x-www-form-urlencoded\n");
  gsm.SimpleWrite("Content-Length: ");
  itoa(strlen(parameters),itoaBuffer,10);
  gsm.SimpleWrite(itoaBuffer);
  gsm.SimpleWrite("\n\n");
  gsm.SimpleWrite(parameters);
  gsm.SimpleWrite("\n\n");
  gsm.SimpleWrite(end_c);
  switch(gsm.WaitResp(10000, 10, "SEND OK")){
    case RX_TMOUT_ERR: 
        return 0;
    break;
    case RX_FINISHED_STR_NOT_RECV: 
        return 0; 
    break;
  }
 delay(50);
    #ifdef DEBUG_ON
        Serial.println("DB:SENT");
    #endif  
  int res= gsm.read(result, resultlength);
  //gsm.disconnectTCP();
  return res;
}

Есть предположение что на хостинге нет каких-либо разрешений или настройки не все сделаны, по-этому добавлю .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Может еще какая-нибудь информация нужна, я не знаю что делать. Прямого доступа к микроконтроллеру нет, к хостингу - есть

READ ALSO
Php. Не могу подключиться к БД Mssql (sqlsrv)

Php. Не могу подключиться к БД Mssql (sqlsrv)

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL ServerAccess the following URL to download the ODBC Driver for SQL Server for x64: https://go

91
необычная связь Entity OneToOne doctrine

необычная связь Entity OneToOne doctrine

Существует Entity в которой нужно реализовать связь OneToOne, но проблема в том, что связь между ними осуществляется по полям не являющимся ключевыми...

64
Возможно обновлять товары в AliExpress через код с помощью файла?

Возможно обновлять товары в AliExpress через код с помощью файла?

Нашёл документацию как можно обновить товары через загрузку YML-файла (https://sellaliexpress

104
Определить, в объекте массив объектов или один объект

Определить, в объекте массив объектов или один объект

Есть объекты со следующим содержимым:

96