c #http #curl #libcurl
#c #http #curl #libcurl
Вопрос:
Скажите, пожалуйста, в чем основное различие между вариантами CURLOPT_MIMEPOST и CURLOPT_POSTFIELDS ?
Что можно сделать с помощью CURLOPT_MIMEPOST — чего нельзя сделать с помощью CURLOPT_POSTFIELDS ?
Ответ №1:
CURLOPT_POSTFIELDS
Отправляет именно те байты, которые вы указываете в теле HTTP-запроса. С типом содержимого по умолчанию application/x-www-form-urlencoded
. libcurl не будет добавлять или кодировать данные каким-либо образом для вас.
С помощью инструмента командной строки curl вы делаете это с -d
помощью .
CURLOPT_MIMEPOST
Заставляет libcurl отправлять «составной formpost». Это поток данных, использующий формат, который позволяет отправителю отправлять на сервер несколько «частей» данных, каждая часть которых должным образом разделена и идентифицирована. Каждая часть имеет имя, содержимое и свой собственный набор заголовков. Когда HTTP-клиент «загружает файл», это почти всегда делается с использованием составных formposts.
Составной formpost — это структурированные данные в теле запроса, и этот параметр помогает создавать и отправлять этот формат. Приложение также может самостоятельно создавать этот формат, если оно предпочитает это, и предоставлять его с CURLOPT_POSTFIELDS
помощью или даже с помощью обратного CURLOPT_READFUNCTION
вызова .
С помощью инструмента командной строки curl вы делаете это с -F
помощью .
Смотрите также
Комментарии:
1. Спасибо, то есть curlopt_mimepost похож на частный случай CURLOPT_POSTFIELDS ? И я могу использовать CURLOPT_POSTFIELDS для реализации CURLOPT_MIMEPOSTis самостоятельно?
2. Да, именно. Позвольте мне немного расширить свой ответ, чтобы сделать это более понятным.