Linux console http get

HTTP POST and GET using cURL in linux

Linux provides a nice little command which makes our lives a lot easier.

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource 
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource 
curl --data "param1=value1¶m2=value2" http://hostname/resource 
curl --form "fileupload=@filename.txt" http://hostname/resource 
curl -X POST -d @filename http://hostname/resource 

For logging into a site (auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login curl -L -b headers http://localhost/ 

the -H flag can also be used to delcare your content as «application/json» when posting data with -X POST

You must log in to answer this question.

Linked

Hot Network Questions

Subscribe to RSS

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

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.14.43533

Ubuntu and the circle of friends logo are trade marks of Canonical Limited and are used under licence.

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 to send HTTP request using curl and wget command from Linux and UNIX? Example Tutorial

You can use either curl or wget command to send HTTP requests from UNIX or Linux operating system. Both commands allow you to send GET and POST requests, which means you can also call REST web services. I have a Java web application, which runs on Linux and exposes WebServices. I was writing a UNIX script to download In some data from that web service when I hit by the question, how do I make an HTTP call from UNIX? What is the UNIX command should I use? If you are also facing the same problem, then you have come to the right ht place. Basically, you can use two UNIX commands to make the HTTP request, wget , and curl .

You can use curl and wget to send both GET and POST HTTP requests. My use case was rather simple, I just need to make a GET call to web service to download the data, but these two commands are mighty and provide many different options to interact with the web using HTTP right from the shell.

Between wget and curl (also known as cURL), curl (I call it «karl») is my favorite. Why? I think because I have used it more often than wget :-).

Читайте также:  Astra linux повысить уровень целостности

You can make your choices if you have good knowledge of the Linux command line, and that’s why I suggest every programmer and software developer join Learn Linux in 5 Days and Level Up Your Career course on Udemy, the best way to become efficient in Linux.

Now let’s see how to send HTTP requests from UNIX using the curl command.

Linux Command to send HTTP GET request

Here is one example of calling web service from Linux shell by sending HTTP GET request using cURL command:

$ curl http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=bd82977b86bf27fb59a04b61b657fb6f "coord":"lon":-0.13,"lat":51.51>,"weather":[ "id":804,"main":"Clouds","description":"overcast clouds","icon":"04n">], "base":"stations", "main":"temp":282,"pressure":1022,"humidity":87,"temp_min":277.15,"temp_max":285.15>, "visibility":10000,"wind":"speed":1.5>,"clouds":"all":90>,"dt":1445577409, "sys":"type":1,"id":5093,"message":0.0201,"country":"GB", "sunrise":1445582275,"sunset":1445619056>,"id":2643743,"name":"London","cod":200>

You can also specify timeout using — m option as shown below:

$ curl -m 2 http://api.openweathermap.org/data/2.5/weather ?q=London,uk&appid=bd82977b86bf27fb59a04b61b657fb6f

This request will timeout in 2 seconds if it doesn’t receive any response.

You can also use wget to send HTTP requests and download the data. The only difference between curl and wget is that curl will print output in console and wget will store it in the file e.g.

$ wget http://localhost:8080/index.html

will download the content of index.html and store it into a file with the same name.

Here is how you can use curl to download wget command in UNIX:

How to send HTTP request from UNIX? Use CURL command

UNIX command to Send an HTTP POST request

You can also use curl to send HTTP post requests. All you need to do is use the —data option to specify the data you want to POST to web service e.g.

$ curl --data "param1=value1¶m2=value2" http://locahost:8080/weather

if you want to send data from file to web service, you can also use the following command:

$ curl -X POST -d @filename http://locahost:8080/weather

Similarly, if you’re going to upload a file, you can do so by executing the following command:

$ curl --form "fileupload=@filename.txt" http://locahost:8080/weather

Btw, these are just the tip of the iceberg when it comes to seeing the real power of curl command. If you want to learn more, I suggest you check out the Linux Command Line Basics course on Udemy. One of the best courses to learn basic and advanced Linux commands.

best course to learn Linux commands for beginners

That’s all about how to send HTTP requests from UNIX and Linux. It’s simple, just remember the curl and wget command. You can explore their option by using man wget and man curl. Also, remember the difference between curl and wget, the former prints the output in the console while the later store the response in the same file as requested. I personally like curl because it’s easier to use but if you like wget stick with it.

  • 10 examples of find command in UNIX (examples)
  • 10 examples of grep command in UNIX (examples)
  • 10 examples of date command in Linux (examples)
  • How to get an IP address from the hostname and vice-versa in Linux (command)
  • 10 examples of xargs command in Linux (examples)
  • 10 Courses to learn Linux commands for beginners (best courses)
  • 10 examples of tar command in UNIX (examples)
  • 10 examples of Vim in UNIX (examples)
  • How to create, update and delete soft link in UNIX (command)
  • How to delete empty files and directory in UNIX (solution)
  • How to make a directory tree in one command? (example)
  • How to how long argument of a process in Solaris (command)
  • UNIX command to find out how long a process is running? (answer)
  • UNIX command to find the size of the file and directory? (command)
  • 5 examples of sort command in Linux (examples)
  • 5 examples of kill command in Linux (examples)
  • 10 examples of chmod command in UNIX (examples)
  • 10 tips for working fast in UNIX? (tips)
Читайте также:  Fifo in linux example

P. S. — If you want to learn Linux and looking for some free resources like books and online courses, then you can also check out this list of free Linux courses for Programmers and IT Professionals. This list contains some of the best free courses from Udemy, Pluralsight, Coursera, Codecademy, and other online platforms.

Источник

Отправка сетевых запросов из командной строки

Сетевые запросы, запущенные из командной строки, бывают разных форм и размеров. Некоторые пользователи признают только curl, другие любят wget. Кому-то больше нравится пакет lwp-request, который предоставляет команды со знакомыми названиями GET, POST и HEAD. Команда HEAD довольно регулярно используется для устранения неполадок с заголовками, возвращаемыми серверами.

Требования

Команды, которые мы собираемся использовать, предоставляются пакетом lwp-request.

Рассматриваемый пакет написан на Perl и, как правило, входит в стандартную комплектацию многих дистрибутивов Linux, а также других Unix-подобных операционных систем, таких как macOS.

Команду lwp-request можно вызвать напрямую с рядом аргументов, но для простоты мы рассмотрим вспомогательные сценарии, которые она поставляет.

Если в вашей системе нет GET, POST и HEAD, вы, скорее всего, сможете установить пакет lwp-request при помощи вашего любимого менеджера пакетов.

В Ubuntu- и Debian-подобных системах вы можете установить этот пакет с помощью следующих команд:

sudo apt update
sudo apt install libwww-perl

В CentOS, Rocky Linux, Fedora и других производных от RedHat системах вы можете установить его с поддержкой URL-адресов HTTPS при помощи такой команды:

sudo dnf install perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch

GET-запросы

Предположим, нам так понравился логотип Alligator.io, что мы решили загрузить его на локальную машину. Чтобы получить файл, вы можете просто запустить GET-запрос:

Читайте также:  Linux cpu usage file

Согласно философии Unix, команда GET предназначена для выполнения одной задачи, а именно извлечение файла.

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

GET https://alligator.io/images/logo-fancy.svg > logo-fancy.svg

Теперь у нас есть локальная копия логотипа Alligator.io.

POST-запросы

Команда GET позволяет нам получать файлы с удаленных серверов, в то время как POST – отправлять данные на сервер для обработки, а также возвращать их вывод.

По сути синтаксис POST такой же, как GET:

Затем вам будет предложено ввести контент, который вы хотите отправить. Ожидаемая строка должна быть в формате строки запроса, который выглядит примерно так:

reptile=alligator&color=#008f68

Когда вы закончите вводить данные, просто нажмите CTRL-D, и контент будет опубликован. Сервис, в который вы отправляете сообщение, отразит запрос:

< "args": <>, "data": "", "files": <>, "form": < "color": "#008f68\n", "reptile": "alligator" >, "headers": < "Content-Length": "32", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "lwp-request/6.39 libwww-perl/6.39" >, "json": null, "origin": "203.0.113.5", "url": "https://httpbin.org/post" >

HEAD-запросы

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

Подобно GET и POST, синтаксис HEAD довольно прост:

Эта команда вернет 200 OK, а также информацию о заголовках, возвращаемых веб-сервисом.

Команда HEAD по умолчанию дает информацию только о последней остановке в цепочке запросов. Чтобы увидеть все запросы, включая автоматический 301 Moved Permanently, передайте аргумент -S:

Это дает нам немного больше информации:

HEAD http://alligator.io/ 301 Moved Permanently HEAD https://alligator.io/ 200 OK Cache-Control: public, max-age=0, must-revalidate Connection: close Date: Sat, 29 Jun 2019 00:49:18 GMT Age: 1 ETag: "8b85849c835909679fc1ba80b307d144-ssl" Server: Netlify Content-Length: 0 Content-Type: text/html; charset=UTF-8 Client-Date: Sat, 29 Jun 2019 00:49:18 GMT Client-Peer: 203.0.113.1:443 Client-Response-Num: 1 Client-SSL-Cert-Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 Client-SSL-Cert-Subject: /CN=alligator.io Client-SSL-Cipher: TLS_AES_256_GCM_SHA384 Client-SSL-Socket-Class: IO::Socket::SSL Strict-Transport-Security: max-age=31536000 X-NF-Request-ID: 60babe56-c0ea-4658-aa5a-3e185f1e851f-10342

Цветной вывод

Однотонный вывод вас разочаровал? В таком случае для выполнения GET, POST и HEAD вы можете использовать псевдоним HTTP-команды HTTPie.

HTTPie может делать все, что делает библиотека lwp-request, с аналогичным синтаксисом, но с бонусом – она поддерживает цветной вывод.

В системах, производных от Ubuntu и Debian, установить HTTPie можно с помощью следующих команд:

sudo apt update
sudo apt install httpie

В дистрибутивах, производных от Centos, Rocky Linux, Fedora и RedHat, установить HTTPie помогут следующие команды, если у вас есть EPEL:

sudo dnf install epel-release
sudo dnf install httpie

Локальные псевдонимы команд выглядят так:

# HTTPie aliases alias GET='http' alias POST='http POST' alias HEAD='http HEAD'

Заключение

В следующий раз, когда вам нужно будет сделать сетевой запрос к API или устранить неполадки с заголовками, возвращаемыми сервером, вы можете сделать это с помощью командной строки, оставив Postman и другие подобные инструменты без дела.

Также это позволяет полностью отказаться от браузера!

Источник

Оцените статью
Adblock
detector