php send get request

PHP GET/POST request

last modified July 9, 2020

PHP GET/POST request tutorial shows how to generate and process GET and POST requests in PHP. We use plain PHP and Symfony, Slim, and Laravel frameworks.

The is an application protocol for distributed, collaborative, hypermedia information systems. HTTP protocol is the foundation of data communication for the World Wide Web.

HTTP GET

The HTTP GET method requests a representation of the specified resource.

HTTP POST

The HTTP POST method sends data to the server. It is often used when uploading a file or when submitting a completed web form.

PHP GET request

In the following example, we generate a GET request with curl tool and process the request in plain PHP.

We start the server.

We send two GET requests with curl.

PHP POST request

In the following example, we generate a POST request with curl tool and process the request in plain PHP.

We start the server.

We send a POST request with curl.

PHP send GET request with Symfony HttpClient

Symfony provides the HttpClient component which enables us to create HTTP requests in PHP.

We install the symfony/http-client component.

We start the server.

We run the send_get_req.php script.

PHP send POST request with Symfony HttpClient

In the following example, we send a POST request with Symfony HttpClient.

We start the server.

We run the send_post_req.php script.

PHP GET request in Symfony

In the following example, we process a GET request in a Symfony application.

A new application is created.

We install the annot and maker components.

We create a new controller.

Inside the HomeController’s index method, we get the query parameters and create a response.

We start the server.

We generate a GET request with curl.

PHP POST request in Symfony

In the following example, we process a POST request in a Symfony application.

We change the controller to process the POST request.

We start the server.

We generate a POST request with curl.

PHP GET request in Slim

In the following example, we are going to process a GET request in the Slim framework.

We get the parameters and return a response in Slim.

The query parameter is retrieved with getQueryParam ; the second parameter is the default value.

We start the server.

We generate a GET request with curl.

PHP POST request in Slim

In the following example, we are going to process a POST request in the Slim framework.

We get the POST parameters and return a response in Slim.

We start the server.

We generate a POST request with curl.

PHP GET request in Laravel

In the following example, we process a GET request in Laravel.

We create a new Laravel application.

We get the GET parameters and create a response.

We start the server.

We send a GET request with curl.

PHP POST request in Laravel

In the following example, we send a POST request from an HTML form.

We validate and retrieve the POST parameters and send them in the response. This example should be tested in a browser.

In this tutorial, we have worked with GET and POST requests in plain PHP, Symfony, Slim, and Laravel.

Источник

How to send a GET request from PHP?

I’m planning to use PHP for a simple requirement. I need to download a XML content from a URL, for which I need to send HTTP GET request to that URL.

How do I do it in PHP?

8 Answers 8

For anything more complex, I’d use cURL.

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

For more advanced GET/POST requests, you can install the CURL library (http://us3.php.net/curl):

http_get should do the trick. The advantages of http_get over file_get_contents include the ability to view HTTP headers, access request details, and control the connection timeout.

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

Remember that if you are using a proxy you need to do a little trick in your php code:

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

Depending on whether your php setup allows fopen on URLs, you could also simply fopen the url with the get arguments in the string (such as http://example.com?variable=value )

I like using fsockopen open for this.

In the other hand, using REST API of other servers are very popular in PHP. Suppose you are looking for a way to redirect some HTTP requests into the other server (for example getting an xml file). Here is a PHP package to help you:

So, getting the xml file:

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

Not the answer you’re looking for? Browse other questions tagged php http get or ask your own question.

Linked

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.17.40238

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

How do I send a POST request with PHP?

Actually I want to read the contents that come after the search query, when it is done. The problem is that the URL only accepts POST methods, and it does not take any action with GET method.

16 Answers 16

CURL-less method with PHP5:

See the PHP manual for more information on the method and how to add headers, for example:

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

@Edward mentions that http_build_query may be omitted since curl will correctly encode array passed to CURLOPT_POSTFIELDS parameter, but be advised that in this case the data will be encoded using multipart/form-data.

I use this function with APIs that expect data to be encoded using application/x-www-form-urlencoded. That’s why I use http_build_query().

I recommend you to use the open-source package guzzle that is fully unit tested and uses the latest coding practices.

Installing Guzzle

Go to the command line in your project folder and type in the following command (assuming you already have the package manager composer installed). If you need help how to install Composer, you should have a look here.

Using Guzzle to send a POST request

The usage of Guzzle is very straight forward as it uses a light-weight object-oriented API:

I’d like to add some thoughts about the curl-based answer of Fred Tanrikut. I know most of them are already written in the answers above, but I think it is a good idea to show an answer that includes all of them together.

Here is the class I wrote to make HTTP-GET/POST/PUT/DELETE requests based on curl, concerning just about the response body:

Improvements

Example of usage

DELETE

Testing

You can also make some cool service tests by using this simple class.

There’s another CURL method if you are going that way.

Источник

cURL в PHP: примеры POST, GET запросов с headers, cookie, JSON и многопоточностью

В этой статье мы рассмотрим эффективные приемы работы с cURL, отправление POST, GET и т.д. запросов, работу с cookie, заголовки, JSON а также в конце статьи будут некоторые полезные инструменты, которые могут значительно облегчить вам работу с HTTP запросами.

GET запрос при помощи cURL

Для того, чтобы отправить запрос, нужно создать объект при помощи функции curl_init(), а затем следует настроить его.

Все настройки, которые вы можете найти по этой ссылке. Там вы найдете опции, которые мы будем устанавливать функцией curl_setopt, в дальнейших примерах.

Пример простого GET запроса при помощи cURL:

Если в результате сервер вернет нам редирект, то мы по нему автоматически не перейдем. А иногда это бывает полезно. Чтобы cURL автоматически шел по редиректу нужно установить опцию CURLOPT_FOLLOWLOCATION.

С установленной опцией скрипт автоматически перейдет по вернувшемуся редиректу и вернет ответ уже с итоговой страницы.

POST запрос при помощи cURL

Теперь давайте отправим post запрос на адрес https://httpbin.org/anything

Отлично, с GET и POST запросами в cURL мы немного освоились. Теперь разберемся с заголовками, которые мы можем отсылать в запросе.

Заголовки устанавливаются при помощи опции CURLOPT_HTTPHEADER Чтобы получше узнать, для чего нужна эта опция давайте попробуем отправить POST запрос в формате JSON

cURL: POST запрос в формате JSON

Отличия конфигурации JSON запроса от обычного POST запроса заключается в том, что мы кодируем поля при помощи json_encode() И добавляем заголовок Content-Type: application/json

cURL: GET запрос в формате JSON

GET запрос в формате JSON отправляется так же как и POST запрос, просто нужно CURLOPT_CUSTOMREQUEST установить в ‘GET’

cURL и другие виды HTTP запросов: PUT, DELETE, HEAD, PATCH, OPTIONS, CONNECT и т.д.

Стоп, Дмитрий, прекрати выдумывать виды запросов!

Ничего я не выдумываю: HTTP протокол предполагает множество типов HTTP запросов просто POST и GET являются более распространенными.

Чтобы отправить PUT запрос, нужно установить опцию CURLOPT_PUT таким образом:

Это делается по тому же принципу, как и CURLOPT_POST. Но что делать с остальным зоопарком запросов? Разве у cURL есть CURLOPT_DELETE или CURLOPT_HEAD? Нет.

Для того, чтобы отправлять другие виды запросов есть другая опция: CURLOPT_CUSTOMREQUEST

Вместо строки curl_setopt($curl, CURLOPT_POST, true); мы явно задаем имя запроса опцией CURLOPT_CUSTOMREQUEST:

Замечание: Не используйте эту возможность пока не убедитесь, что сервер поддерживает данный тип запроса.

Как получить заголовки ответа

В предыдущем примере мы научились посылать заголовки. Самый правильный способ принять заголовки:

Иногда можно встретить другой вариант получения заголовков ответа. К сожалению, они не совсем правильные и могут работать некорректно в некоторых случаях.

Рассмотрим такой пример:

Мы сначала определяем размер заголовка, с помощью CURLINFO_HEADER_SIZE затем вырезаем его из ответа. К сожалению, это может не срабатывать, когда используется прокси или в некоторых случаях редиректа.

Скачивание больших файлов с помощью cURL

Для того, чтобы скачать большой файл пригодится этот способ:

Обратите внимание, если вы будете использовать file_get_contents для скачивания файлов, то файл сначала загружается в оперативную память, а потом сохраняется на диск. Поэтому если файл действительно большой, то скорее всего вашему серверу не хватит памяти. Также к памяти будет требователен следующий код:

Здесь мы скачиваем файл при помощи cURL в оперативную память, а затем сохраняем его на диск. Не смотря на то, что этот способ не годится для скачивания больших файлов, с помощью него можно вполне сохранить простую веб страницу.

Параллельные cURL запросы в PHP

Для чего могут потребоваться многопоточные запросы? Например у нас есть много URL адресов:

И если мы будем по очереди отправлять запросы, то второй запрос начнется только после того, как закончился первый и так далее, а это существенно увеличивает время работы скрипта.

Как выполнить 3 запроса одновременно? В этом нам поможет curl_multi_

Давайте решим конкретную задачу при помощи параллельных curl запросов. Нам нужно отправить одновременно 3 запроса.

Такие параллельные запросы выполняются значительно быстрее чем поочередные.

cURL запросы с сохранением и загрузкой cookie из файла

cURL позволяет нам установить cookie при передачи запросов, а также автоматически принимать и устанавливать cookie, которые нам возвращает сервер, сохраняя их между запросами.

Давайте рассмотрим такой пример:

Теперь cookie у нас хранятся в файле cookie.txt в директории со скриптом (если вы ничего не меняли). Если мы совершаем повторные запросы, то cURL автоматически берет и отправляет cookie на сервер, как и обычный браузер. Таким образом мы можем авторизироваться на сайте и сохранить сеанс между запросами.

Передача cookie без файлов

Иммитация браузера с помощью cURL

Иногда сайт, к которому мы обращаемся может фильтровать запросы, защищаясь от парсинга. Если для этого используются упрощенные способы защиты, например проверка User-Agent, то мы можем легко притвориться, что являемся реальным польователем, который взаимодействует с сайтом через браузер, мы можем послать заголовки и cookie, которые обычно посылает браузер.

В данном примере установлены заголовки, которые посылает Chrome.

В простых ситуациях этого хватает. Но если используется защита при помощи javascript или что-то более продвинутое, то здесь cURL бессилен, и следует использовать либо BAS либо Zennoposter. Либо если вы хотите попытать счастье с PHP, то Selenium.

Не используйте эти знания в противоправных целях.

cURL запросы через прокси

Простой пример для отправки запросов через proxy. Если ваш прокси предполагает авторизацию, то раскомментируйте соответствующие строчки.

Отправка файлов

Авторизация с помощью cURL

HTTP Авторизация

Чтобы с помощью cURL авторизироваться на сайте, который использует Basic HTTP-аутентификацию нужно установить опцию CURLOPT_USERPWD, в которой будет наш логин и пароль.

OAuth авторизация

Авторизация через форму

Давайте применим полученные нами знания и авторизируемся на каком-нибудь сайте. Для этого нужно посмотреть куда форма отправляет данные и отправить туда то же самое.

Допустим на сайте есть такая форма:

Тогда наш cURL запрос должен быть сформирован так:

Автоматическое построение запросов

Перевод консольной команды curl в PHP

И вот еще один сервис, который переводит консольную команду curl в PHP: https://incarnate.github.io/curl-to-php/

Так вы можете создать простые запросы на cURL в PHP не создавая их вручную.

Лайфхак

В консоли браузера, во вкладке сеть, вы можете кликнуть правой кнопкой мыши и скопировать любой запрос в виде команды cURL, а потом с помощью сервиса curl-to-php перевести запрос в PHP. Теперь вы вообще можете сконвертировать в cURL абсолютно любой запрос, который посылает ваш браузер.

Как работать с cURL гораздо проще

Вы можете спросить: почему у cURL такие кривые и страшные методы? У вас может возникнуть желание взять и создать обертку для работы с cURL, чтобы вы могли не писать каждый раз большие куски некрасивого кода, а писать все проще, например так:

К счастью, такая обертка уже написана и найти ее можно здесь: https://github.com/php-curl-class/php-curl-class

Просто установите ее при помощи: composer require php-curl-class/php-curl-class и не работайте с кривыми кусками кода, которые таковы вероятно потому, что cURL изначально консольное приложение.

POST и GET запросы без cURL

С помощью PHP мы можем отправить простой GET запрос используя функцию file_get_contents.

При помощи file_get_contents мы также можем отправить POST запрос.

Подробнее о том, какие опции можно передавать в stream_context_create, вы можете изучить здесь: http://docs.php.net/manual/ru/context.http.php

Другие инструменты для работы с запросами в PHP

Для работы с запросами есть еще более мощный инструмент: Guzzle

Несколько примеров на Guzzle

GET запросы на Guzzle

Разные типы запросов на Guzzle

Асинхронные запросы на Guzzle

Если интересно, то читайте: Guzzle Quick Start

Пишите комментарии, если что-то осталось не понятно.

Источник

Detecting request type in PHP (GET, POST, PUT or DELETE)

How can I detect which request type was used (GET, POST, PUT or DELETE) in PHP?

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

13 Answers 13

Example

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

REST in PHP can be done pretty simple. Create http://example.com/test.php (outlined below). Use this for REST calls, e.g. http://example.com/test.php/testing/123/hello. This works with Apache and Lighttpd out of the box, and no rewrite rules are needed.

Detecting the HTTP method or so called REQUEST METHOD can be done using the following code snippet.

You could also do it using a switch if you prefer this over the if-else statement.

If a method other than GET or POST is required in an HTML form, this is often solved using a hidden field in the form.

For more information regarding HTTP methods I would like to refer to the following StackOverflow question:

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

We can also use the input_filter to detect the request method while also providing security through input sanitation.

php send get request. Смотреть фото php send get request. Смотреть картинку php send get request. Картинка про php send get request. Фото php send get request

Since this is about REST, just getting the request method from the server is not enough. You also need to receive RESTful route parameters. The reason for separating RESTful parameters and GET/POST/PUT parameters is that a resource needs to have its own unique URL for identification.

Here’s one way of implementing RESTful routes in PHP using Slim:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *