Linux curl x www form urlencoded

Как сделать POST-запрос с помощью cURL

cURL — это утилита командной строки для передачи данных с или на удаленный сервер с использованием одного из поддерживаемых протоколов. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.

cURL используется разработчиками для тестирования API , просмотра заголовков ответов и выполнения HTTP-запросов.

В этой статье мы собираемся объяснить, как использовать cURL для выполнения запросов POST. Метод HTTP POST используется для отправки данных на удаленный сервер.

Выполнение запроса POST

Общая форма команды curl для выполнения запроса POST следующая:

Тип тела запроса указывается его заголовком Content-Type .

Обычно запрос POST отправляется через HTML-форму. Данные, отправляемые в форму, обычно кодируются в типе содержимого multipart/form-data или application/x-www-form-urlencoded .

Чтобы создать запрос POST, используйте параметр -F , за которым следует пара field=value . В следующем примере показано, как отправить POST-запрос в форму с полями «имя» и «электронная почта»:

curl -X POST -F 'name=linuxize' -F '[email protected]' https://example.com/contact.php

Когда используется опция -F , curl отправляет данные с использованием Content-Type multipart/form-data .

Другой способ сделать запрос POST — использовать параметр -d . Это заставляет curl отправлять данные с использованием Content-Type application/x-www-form-urlencoded Content-Type.

curl -X POST -d 'name=linuxize' -d '[email protected]' https://example.com/contact.php

Если параметр -d используется более одного раза, вы можете объединить данные с помощью символа & :

curl -X POST -d 'name=linuxize&[email protected]' https://example.com/contact.php

Указание Content-Type

Чтобы установить определенный заголовок или Content-Type, используйте параметр -H . Следующая команда устанавливает тип запроса POST на application/json и отправляет объект JSON:

Читайте также:  Repair linux boot grub

Загрузка файлов

Чтобы отправить файл с помощью curl , просто добавьте символ @ перед местоположением файла. Файл может быть архивом, изображением, документом и т. Д.

curl -X POST -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload

Выводы

Мы показали вам, как использовать curl для выполнения запросов POST. Дополнительные сведения о curl см. На странице документации по Curl .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

cURL send JSON as x-www-form-urlencoded [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.

Using curl as x-www-form-urlencoded without using a .json file. I cannot figure out how to build the curl -F .

2 Answers 2

For application/x-www-form-urlencoded you could try:

curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/blahblah 

Where param1=value. have to be your JSON data as chicago=123&boston=245

curl -d "param1=value1¶m2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/blahblah 

Instead of http://localhost:3000/blahblah you should provide real URL of your service.

The whole point of curl -F , according to the man page, is «to POST data using the Content-Type multipart/form-data according to RFC 2388.» In other words, it’s best used when you need to emulate an HTML form with a file input.

Instead use curl -d to specify the raw POST data:

If this is actually how they expect data, it is a misconfigured server, as x-www-form-urlencoded data should be in the form key=value .

Читайте также:  Tenda w311mi драйвер linux

Источник

Curl Post Request

The format of a POST request with curl is: [.inline-code]curl -X POST [options] [URL][.inline-code].

An example POST request to submit a todo list task to a REST API might look like:

 curl -H 'Content-Type: application/json' \ -d '< "title":"foo","body":"bar", "id": 1>' \ -X POST \ https://example.com/posts

Three options provided here are:

  • [.inline-code]-X[.inline-code] was used to provide the HTTP method we use to send the request. In this case, the method is POST
  • [.inline-code]-d[.inline-code] was used to provide the associated data in the body of the HTTP request
  • [.inline-code]-H[.inline-code] was used to specify headers for the request

Each of these options also have associated aliases. For example, for [.inline-code]-X[.inline-code] you can instead provide [.inline-code]—request[.inline-code], and for [.inline-code]-H[.inline-code] you can provide [.inline-code]—headers[.inline-code].

These are just some of the possible options, but there are many others, enumerated below.

[#common-operations]Common POST Request Operations[#common-operations]

[#sending-form-data]Sending Form Data[#sending-form-data]

There are two common ways to send form data with POST requests, each with different content-types, demonstrated below:

# multipart/form-data ## Text Field curl -H "Content-type: multipart/form-data" \ -F title=foo \ -F body=bar \ -F \ -X POST \ https://example.com/posts ## Image Upload curl -H "Content-type: multipart/form-data" \ -F profile=@avatar.jpg \ https://example.com/avatar.cgi # application/x-www-form-urlencoded curl -H "Content-type: application/x-www-form-urlencoded" \ -d "title=foo" \ -d "body=bar" \ -d "id=1" \ -X POST \ https://example.com/posts

As we can see from the image, to use multipart/form-data content-type, we send data with the [.inline-code]-F[.inline-code] (or [.inline-code]—form[.inline-code] option). To use application/x-www-form-urlencoded content-type, we use the [.inline-code]-d[.inline-code] (or [.inline-code]—data[.inline-code]) option.

Generally speaking, multipart/form-data is more often used to send binary data like images, while application/x-www-form-urlencoded is used to send text data.

Читайте также:  Процесс загрузки операционной системы linux

By default, HTML forms will send data using the content-type of application/x-www-form-urlencoded when submitted.

[#sending-image-data]Sending Image Data[#sending-image-data]

To send image data in a POST request, include the image in the form data by prefixing the filename with an [.inline-code]@[.inline-code] symbol as follows:

 curl -F profile=@avatar.jpg \ https://example.com/avatar.cgi

The @ symbol forces the content part of the form to be a file, which is then uploaded to the server.

Alternatively, we could base64 encode the image and send it as a field in a form field or JSON body field of your request, but this is far less ergonomic:

 curl -H 'Content-Type: application/json' \ -d '' \ -X POST \ https://example.com/avatar.cgi

[#common-gotchas]Common Gotchas[#common-gotchas]

  • Argument names are case sensitive. For example, [.inline-code]-F[.inline-code] corresponds to the argument for form data, while [.inline-code]-f[.inline-code] is a flag indicating whether we want to fail fast with no output
  • When passing content of type application/json, be sure to wrap the JSON body in single quotes — e.g. [.inline-code]-d «< "title":"foo" >«[.inline-code] would be invalid
  • You can only use breaklines if you include [.inline-code]\[.inline-code] a backslash character. There can be no trailing spaces after the backslash

[#post-request-arguments]cURL POST Request Arguments[#post-request-arguments]

Arguments available for the options field of the curl POST format ([.inline-code]curl -X POST [options] [URL][.inline-code]) are enumerated below:

Источник

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