На самом деле я хочу прочитать содержимое, которое идет после поискового запроса, когда это будет сделано. Проблема в том, что URL принимает только POST
методы, и он не выполняет никаких действий с GET
методом ...
Я должен прочитать все содержимое с помощью domdocument
или file_get_contents()
. Есть ли метод, который позволит мне отправить параметры с POST
методом, а затем прочитать содержимое через PHP
?
file_get_contents()
только в том случае, если были включены обертки fopen. Смотрите php.net/manual/en/…file_get_contents()
file_get_contents()
является частью ядра PHP. Кроме того, использование расширения без необходимости может расширить поверхность атаки вашего приложения. Например, Google php curl cveВы можете использовать cURL :
источник
Я использую следующую функцию для публикации данных с помощью curl. $ data - это массив полей для публикации (будет правильно закодирован с использованием http_build_query). Данные кодируются с использованием application / x-www-form-urlencoded.
@Edward упоминает, что http_build_query может быть опущен, так как curl будет правильно кодировать массив, переданный параметру CURLOPT_POSTFIELDS, но имейте в виду, что в этом случае данные будут кодироваться с использованием multipart / form-data.
Я использую эту функцию с API, которые ожидают, что данные будут закодированы с использованием application / x-www-form-urlencoded. Вот почему я использую http_build_query ().
источник
http_build_query
преобразует$data
массив в строку, избегая вывода в виде multipart / form-data.... CURLOPT_RETURNTRANSFER, true
приводит$response
содержащий содержимое.file_get_contents
и ваше решение нуждается в CURL, чего нет у многих людей. поэтому ваше решение, возможно, работает, но оно не отвечает на вопрос, как это сделать с помощью встроенных встроенных файловых / потоковых функций.Я рекомендую вам использовать пакетную утилиту с открытым исходным кодом, которая полностью протестирована модульно и использует новейшие методы кодирования.
Установка жрет
Перейти к командной строке в вашей папке проекта и введите следующую команду (если у вас уже есть менеджер пакетов композитор установлен). Если вам нужна помощь в установке Composer, вы должны посмотреть здесь .
Использование Guzzle для отправки запроса POST
Использование Guzzle очень простое, поскольку оно использует легкий объектно-ориентированный API:
источник
Есть другой метод CURL, если вы идете по этому пути.
Это довольно просто, как только вы поймете, как работает расширение PHP curl, комбинируя различные флаги с вызовами setopt (). В этом примере у меня есть переменная $ xml, которая содержит XML, который я подготовила для отправки - я собираюсь опубликовать содержимое этого метода тестирования в примере.
Сначала мы инициализировали соединение, затем мы установили некоторые параметры с помощью setopt (). Они говорят PHP, что мы делаем пост-запрос, и что мы отправляем с ним некоторые данные, предоставляя данные. Флаг CURLOPT_RETURNTRANSFER сообщает curl, чтобы он выводил нам результат в качестве возвращаемого значения curl_exec, а не выводил его. Затем мы делаем вызов и закрываем соединение - результат в $ response.
источник
$ch
не$curl
, правильно?Если вы случайно используете Wordpress для разработки своего приложения (на самом деле это удобный способ получить авторизацию, информационные страницы и т. Д. Даже для очень простых вещей), вы можете использовать следующий фрагмент:
Он использует различные способы создания фактического HTTP-запроса, в зависимости от того, что доступно на веб-сервере. Для получения дополнительной информации см. Документацию HTTP API .
Если вы не хотите разрабатывать собственную тему или плагин для запуска движка Wordpress, вы можете просто сделать следующее в изолированном файле PHP в корне Wordpress:
Он не отображает темы и не выводит HTML, просто взломайте API Wordpress!
источник
Я хотел бы добавить некоторые мысли об основанном на завитках ответе Фреда Танрикута. Я знаю, что большинство из них уже написаны в ответах выше, но я думаю, что это хорошая идея, чтобы показать ответ, который включает в себя все из них вместе.
Вот класс, который я написал для выполнения запросов HTTP-GET / POST / PUT / DELETE на основе curl, касающихся только тела ответа:
улучшения
Пример использования
ПОЛУЧИТЬ
ПОСЛЕ
ПОЛОЖИЛ
УДАЛЯТЬ
тестирование
Вы также можете сделать несколько крутых тестов сервиса с помощью этого простого класса.
источник
Другая альтернатива из завитка менее метода выше , чтобы использовать нативные потоковые функции:
stream_context_create()
:stream_get_contents()
:Функция POST с этим может быть просто так:
источник
fclose()
если$fp
естьfalse
. Потомуfclose()
что ожидает ресурс является параметром.Лучший способ отправки
GET
илиPOST
запроса с помощьюPHP
, как показано ниже:Код взят из официальной документации здесь http://docs.php.net/manual/da/httprequest.send.php
источник
Есть еще один, который вы можете использовать
Нажмите здесь для деталей
источник
Я искал похожую проблему и нашел лучший подход для этого. Так что вот так.
Вы можете просто поместить следующую строку на странице перенаправления (скажем, page1.php).
Это нужно для перенаправления запросов POST на вызовы REST API. Это решение может перенаправлять с данными поста, а также с пользовательскими значениями заголовка.
Вот ссылка ссылка .
источник
redirect a page request with POST param
противsend POST request
. Для меня цель обоих одинакова, поправьте меня, если я ошибаюсь.Здесь используется только одна команда без cURL. Супер просто.
источник
Попробуйте пакет PEAR HTTP_Request2 , чтобы легко отправлять запросы POST. Кроме того, вы можете использовать функции curl в PHP или использовать потоковый контекст PHP .
HTTP_Request2 также позволяет макетировать сервер , поэтому вы можете легко тестировать свой код
источник