Перейти к основному контентуСправка по использованию специальных возможностей
Оставить отзыв о специальных возможностях
Режим ИИ
Все
Картинки
Видео
Новости
Ещё
Покупки
Карты
Книги
Авиабилеты
Произошла ошибка. Ваша история поиска не была удалена.

Результаты поиска

История режима ИИ
Новый чат

Удалить все поисковые запросы?

Вы не сможете вернуться к этим ответам.
Удалить все
Настроить общедоступные ссылки
Моя история Google Поиска

Удалить поисковой запрос?

Вы не сможете вернуться к этому ответу.
История режима ИИ

Удалить все поисковые запросы?

Вы не сможете вернуться к этим ответам.
Удалить все
Настроить общедоступные ссылки
Моя история Google Поиска
Продолжайте работу с того места, где остановились.
Сохраните историю, чтобы быстрее получать ответы на дополнительные запросы, просматривать результаты по прежним запросам и пользоваться другими функциями.
Нет истории режима ИИ
мне курл нужно переделать под звапрос POSTfunction getSensorsInfoFromApi($search_query) { // Пример CURL запроса // Замените URL и параметры на ваши реальные $api_url = "https://control.mail.com/nosy/save_form.php?search-query" . urlencode($search_query); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 9); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code == 200 && $response) { // Предполагаем, что API возвращает JSON $data = json_decode($response, true); // Преобразуем ответ API в нужный формат // Пример структуры ответа: // [ // ['name' => 'Датчик 1', 'description' => 'Описание...', 'quantity' => 1], // ... // ] return $data; }
12:55
Чтобы перевести этот запрос на POST, нужно убрать параметры из URL и передать их через опцию CURLOPT_POSTFIELDS. 
Вот обновленный код: 
php
function getSensorsInfoFromApi($search_query) {
    $api_url = "https://control.mail.com/nosy/save_form.php";
    
    // Данные для отправки
    $post_data = ['search-query' => $search_query];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // Указываем, что это POST запрос
    curl_setopt($ch, CURLOPT_POST, true);
    // Передаем массив с данными
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 9);
    
    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($http_code == 200 && $response) {
        return json_decode($response, true);
    }
    
    return null;
}
Используйте код с осторожностью.
Скопировано в буфер обмена
Что изменилось: 
  1. URL: Теперь он «чистый», без знака вопроса и параметров.
  2. CURLOPT_POST: Активирует метод POST.
  3. CURLOPT_POSTFIELDS: Здесь мы передаем сами данные. Функция http_build_query преобразует массив в строку вида param=value&..., что является стандартом для обычных форм. 
Подсказать, как добавить в этот запрос дополнительные заголовки (headers) или обработать ошибки, если API ничего не вернет? 
Копировать
Создание общедоступной ссылки…
Хороший ответ
Плохой ответ
Дополнительно

Экономит время
Очистить
Полезный
Подробный
Другое
Неверный
Недопустимый
Не работает
Нет
Другое
Копия этого чата будет добавлена в ваш отзыв
В отзыв будет добавлена копия этого чата и изображение результатов вашего поиска.
В ваш отзыв будет добавлена копия этого чата, все ссылки, которыми вы поделились, а также изображение результатов вашего поиска.
Спасибо, что сообщили нам.
Чтобы проанализировать отзыв и улучшить работу сервисов, мы можем использовать сведения из вашего аккаунта и данные о вашей системе в соответствии с Политикой конфиденциальности и Условиями использования. Если вы обнаружили материалы, нарушающие закон, запросите их удаление.
  • SSL из PHP: socket и cURL / Хабр
    Отблагодарил всякими способами =). Переходим ко второму способу. CURLOPT_URL — это URL запроса. CURLOPT_POST — говорим, что будем ...
    Хабр
  • SSL из PHP: socket и cURL / Хабр
    Отблагодарил всякими способами =). Переходим ко второму способу. CURLOPT_URL — это URL запроса. CURLOPT_POST — говорим, что будем ...
    Хабр
Показать все
почему ошибка function getSensorsInfoFromApi($search_query) { // Пример CURL запроса // Замените URL и параметры на ваши реальные //$api_url = "https://control.mail.com/nosy/save_form.php?search-query" . urlencode($search_query); $api_url = "https://control.mail.com/nosy/save_form.php"; $post_data = ['search-query' => $search_query];//POST array $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Указываем, что это POST запрос curl_setopt($ch, CURLOPT_POST, true); // Передаем массив с данными POST curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 9); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code == 200 && $response) { // Предполагаем, что API возвращает JSON $data = json_decode($response, true); // Преобразуем ответ API в нужный формат // Пример структуры ответа: // [ // ['name' => 'Датчик 1', 'description' => 'Описание...', 'quantity' => 1], // ... // ] return $data; } // Возвращаем тестовые данные если API недоступен return [ ['name' => 'Пример датчика 1', 'description' => 'Технические характеристики датчика...', 'quantity' => 1], ['name' => 'Пример датчика 2', 'description' => 'Дополнительные параметры...', 'quantity' => 2], ['http_code'] => $http_code ];}
13:00
Ошибка возникает в блоке возврата тестовых данных. В PHP нельзя объявлять элемент массива вот так: ['http_code'] => $http_code. 
Вы пытаетесь использовать массив в качестве ключа, а ключом может быть только строка или число. 
Исправьте последнюю часть функции: 
php
    // Возвращаем тестовые данные если API недоступен
    return [
        ['name' => 'Пример датчика 1', 'description' => 'Технические характеристики датчика...', 'quantity' => 1],
        ['name' => 'Пример датчика 2', 'description' => 'Дополнительные параметры...', 'quantity' => 2],
        'http_code' => $http_code // Убрал лишние квадратные скобки вокруг ключа
    ];
Используйте код с осторожностью.
Скопировано в буфер обмена
В чем была проблема: 
  • Ошибка синтаксиса: ['http_code'] — это создание нового массива. PHP ожидал здесь либо строку 'http_code', либо переменную.
  • Логика: В таком виде массив будет "смешанным" (два элемента со списком датчиков и один элемент с кодом ответа). Если ваш скрипт, который вызывает эту функцию, ожидает только список датчиков, он может сломаться при попытке обработать http_code как датчик. 
Совет: Чтобы точно увидеть, какую именно ошибку выдает PHP, добавьте error_reporting(E_ALL); ini_set('display_errors', 1); в начало файла. 
Хотите, я перепишу функцию так, чтобы код ошибки возвращался в более удобном формате, отдельно от данных? 
Копировать
Создание общедоступной ссылки…
Хороший ответ
Плохой ответ
Дополнительно

Экономит время
Очистить
Полезный
Подробный
Другое
Неверный
Недопустимый
Не работает
Нет
Другое
Копия этого чата будет добавлена в ваш отзыв
В отзыв будет добавлена копия этого чата и изображение результатов вашего поиска.
В ваш отзыв будет добавлена копия этого чата, все ссылки, которыми вы поделились, а также изображение результатов вашего поиска.
Спасибо, что сообщили нам.
Чтобы проанализировать отзыв и улучшить работу сервисов, мы можем использовать сведения из вашего аккаунта и данные о вашей системе в соответствии с Политикой конфиденциальности и Условиями использования. Если вы обнаружили материалы, нарушающие закон, запросите их удаление.
      Показать все
      а почему ответ приходит 200 но возвращается массив демонстрации ? $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);if ($http_code == 200 && $response) { // Предполагаем, что API возвращает JSON $data = json_decode($response, true); // Преобразуем ответ API в нужный формат // Пример структуры ответа: // [ // ['name' => 'Датчик 1', 'description' => 'Описание...', 'quantity' => 1], // ... // ] return $data; } // Возвращаем тестовые данные если API недоступен return [ ['name' => 'Пример датчика 1', 'description' => 'Технические характеристики датчика...', 'quantity' => 1], ['name' => 'Пример датчика 2', 'description' => 'Дополнительные параметры...', 'quantity' => 2], 'http_code' => $http_code ];
      13:18
      Если $http_code возвращает 200, но вы всё равно видите демонстрационный массив, значит, условие if ($http_code == 200 && $response) не срабатывает до конца. 
      Скорее всего, проблема в переменной $response. Вот основные причины: 
      1. Сервер возвращает пустую строку 
      Если API отвечает кодом 200, но тело ответа пустое, то if ($response) вернет false, и скрипт проскочит к тестовым данным. 
      • Как проверить: Добавьте var_dump($response); перед условием. 
      2. Ошибка в json_decode 
      Даже если условие выполняется и json_decode срабатывает, он может вернуть null (если JSON невалидный). В вашем коде нет проверки результата декодирования. Если $data внутри if окажется пустой, функция может ничего не вернуть (или вернуть null), и вы увидите пустоту или ошибку дальше по коду. 
      3. API не принимает POST в таком виде 
      Некоторые сервера при получении POST-запроса, который они не ожидали (или если не хватает заголовков), могут вернуть 200 OK, но с пустым телом или сообщением об ошибке в формате, который не является JSON. 

      Как это исправить и отладить (рекомендуемый код): 
      php
          $response = curl_exec($ch);
          $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          $curl_error = curl_error($ch); // Получаем текст ошибки CURL, если она есть
          curl_close($ch);
      
          // Проверяем: код 200 И ответ не пустой
          if ($http_code == 200 && !empty($response)) {
              $data = json_decode($response, true);
              
              // Проверяем, что JSON успешно расшифрован и это массив
              if (json_last_error() === JSON_ERROR_NONE && is_array($data)) {
                  return $data;
              }
          }
          
          // Если мы здесь, значит что-то пошло не так. 
          // Добавим реальную информацию в отладку:
          return [
              ['name' => 'Ошибка API', 'description' => 'Код: ' . $http_code . ' | CURL: ' . $curl_error, 'quantity' => 0],
              'debug_raw_response' => $response, // Посмотрим, что реально пришло
              'http_code' => $http_code
          ];
      
      Используйте код с осторожностью.
      Скопировано в буфер обмена
      Что сделать сейчас: 
      Посмотрите, что выведет debug_raw_response. Если там пусто, значит сервер mail.com почему-то не отдает данные на ваш POST-запрос. Возможно, ему нужен заголовок Content-Type: application/x-www-form-urlencoded. 
      Хотите, добавим в запрос заголовки, чтобы имитировать отправку формы из браузера? 
      Копировать
      Создание общедоступной ссылки…
      Хороший ответ
      Плохой ответ
      Дополнительно

      Экономит время
      Очистить
      Полезный
      Подробный
      Другое
      Неверный
      Недопустимый
      Не работает
      Нет
      Другое
      Копия этого чата будет добавлена в ваш отзыв
      В отзыв будет добавлена копия этого чата и изображение результатов вашего поиска.
      В ваш отзыв будет добавлена копия этого чата, все ссылки, которыми вы поделились, а также изображение результатов вашего поиска.
      Спасибо, что сообщили нам.
      Чтобы проанализировать отзыв и улучшить работу сервисов, мы можем использовать сведения из вашего аккаунта и данные о вашей системе в соответствии с Политикой конфиденциальности и Условиями использования. Если вы обнаружили материалы, нарушающие закон, запросите их удаление.
          Показать все
          Закрыть
          Другие способы ввода
          Микрофон
          Остановить
          Отправить
          Задать вопрос по теме:

          Turn on your Visual Search History?

          Google uses its visual recognition technologies to process the images you use to search, like when you search with Google Lens. If you turn on your Visual Search History, Google will save these images from eligible Google services to your Web & App Activity when you’re signed in to your Google Account. You can learn more about this setting and which Google services save images to it at g.co/Search/VisualSearchHistory.

          How visual search history is used

          Your Visual Search History may be used to improve your experience on Google services, like letting you revisit your past visual searches. It may be used to develop and improve Google’s visual recognition and search technologies, as well as the Google services that use them.

          When visual search history is off

          If you turn this setting off, any previous Visual Search History may still be kept and used to improve Google’s visual recognition and search technologies, unless you delete it from your Web & App Activity.

          Visual Search History doesn’t affect images saved by other settings, like Gemini Apps Activity.

          How to manage your Visual Search History

          You can view, delete, or manage your Visual Search History at activity.google.com. To download your Visual Search History, visit takeout.google.com. Images will be deleted in accordance with your Web & App Activity auto-delete settings, although some types of images may be deleted sooner.

          Google uses and saves data in accordance with Google Privacy Policy.

          No thanks
          Turn on
          Центр управления рекламой
          Приложения Google
          Аккаунт Google
          Артём Казанов
          tracelinemsk@gmail.com