Flutter — параметр запроса http post не принимается

#javascript #flutter #dart #request

Вопрос:

Я хочу получить список аниме с сервера по запросу POST (это поиск, поэтому я делаю запрос POST со строковым параметром). У меня есть код с сайта, который работает и возвращает два-три аниме — это правильный ответ, и мое приложение возвращает небольшой список аниме. Почему это происходит? Я даю тот же параметр «привет».

Вот код Javascript, он работает:

     let body = "name="   encodeURIComponent(getParameterByName('search'));
    var req = new XMLHttpRequest();

    req.open("POST", "https://api.animevost.org/v1/search", true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    req.onload = function () {
        unpackLastTitles(req.response);
    };

    req.onerror = function () {
        alert("Загрузка не удалась");
    };
    console.log(9898, body, req);

    req.send(body);
 

И вот мой код Флаттера, он возвращает большой список аниме (вместо искомых) независимо от того, что вы ищете:

 final response = await http.post(
          Uri.https('api.animevost.org', '/v1/search', {'name': tC.text}),
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Credentials": 'true',
            "Access-Control-Allow-Headers":
                "Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,locale",
            "Access-Control-Allow-Methods": "POST, OPTIONS"
          });
 

Ответ №1:

Вы должны отправить это в качестве параметра тела.

 final response = await http.post(
   Uri.https('api.animevost.org', '/v1/search'),
   body: {'name': tC.text}, // Setting as body parameter
   headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Credentials": 'true',
      "Access-Control-Allow-Headers":
         "Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,locale",
      "Access-Control-Allow-Methods": "POST, OPTIONS"
});