API — как загрузить файл через полезную нагрузку запроса с помощью curl Stack Overflow

У меня нет доступа к внутреннему серверу, и я проанализировал API через сеть. Я хочу загрузить файл с использованием этого API. Я заметил, что в пост-запросе к этому API нет параметров. Я наблюдал за полезной нагрузкой в ​​сети.

Заголовок ответа

Cache-Control: нет кэша
Подключение: держать-жив
Content-Length: 135
Content-Type: Текст / html; кодировка = UTF-8
Дата: суббота, 06 августа 2016 14:32:00 по Гринвичу
Место нахождения:Http: // myURL
Сервер: Nginx / 1.2.3
Set-Cookie: _mystore2_session = BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARg% 3D% 3D — 63863b861eb33b48b3137d187b2113fe90a930f3; Путь = /; HttpOnly
Статус: 302 Найдено
X-Rack-Cache: аннулировать, пройти
X-Request-Id: 3c843dc4dcb55bcf5f15e139264fa9be
X-Runtime: 0.884597
X-UA-Compatible: IE = Край, хром = 1

Заголовок запроса

Accept: Текст / HTML, приложение / XHTML + XML, приложение / XML; д = 0,9, образ / WebP,/; Д = 0,8
Accept-Encoding: gzip, deflate
Accept-Language: EN-US, ан; д = 0,8
Cache-Control: нет кэша
Подключение: держать-жив
Content-Length: 642389
Content-Type: многочастному / форм-данных; граница = —- WebKitFormBoundary2rjUr5SSxx3BXjGn
Печенье: s =; lat_lon = 33,69% 2673,0551; __utmt = 1; _mystore2_session = BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw — c3c1b5d437fd04a80dc888822811d2d4d354ae29; __utma = 129180296.2104761345.1470477279.1470488831.1470491357.3; __utmb = 129180296.10.9.1470493699533; __utmc = 129180296; не __utmz = 129180296.1470477279.1.1.utmcsr = (прямой) | utmccn = (прямой) | utmcmd = (нет)
Ведущий: www.usedmotorcycles.net
Происхождение: myURL
Pragma: нет кэша
Referer: myURL
Обновление нестабильным-запросов: 1
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.2; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 51.0.2704.103 Safari / 537.36

Запросить полезную нагрузку

——WebKitFormBoundary2rjUr5SSxx3BXjGn
Content-Disposition: форма-данные; Name = «utf8»


—— WebKitFormBoundary2rjUr5SSxx3BXjGn
Content-Disposition: форма-данные; имя = «authenticity_token»

ptXIz6vJJqveSBM5Wvq387jZG4qql7TbL0xwz8Yj6iA =
—— WebKitFormBoundary2rjUr5SSxx3BXjGn
Content-Disposition: форма-данные; Name = «изображение [Приложение]»; filename = «Screenshot (156) .png» Content-Type: image / png

Как я могу использовать полезную нагрузку curl для отправки моего файла?

1

Решение

цитата: I have observed that there are no parameters in post request to that API
Неправильно, есть несколько параметров, чтобы назвать несколько: Cookie:s, lat_lon, __utmt, _mystore2_session, __utma, И БОЛЬШЕ.

Кроме того, это не полный заголовок запроса, который вы нам показываете. с одной стороны, он пропускает
тип запроса (хотя это, вероятно, запрос POST)
во всяком случае, чтобы повторить это с curl, это что-то вроде:

<?php
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>'???',
CURLOPT_ENCODING=>'',
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>array(
'Cookie:s'=>'',
'lat_lon'=>'33.69&73.0551',
'_mystore2_session'=>'BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJTAxYzJhNTBkYmY3ZTRkYTBhYmY4NzhjNzdmNGY5OWRhBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMXB0WEl6NnZKSnF2ZVNCTTVXdnEzODdqWkc0cXFsN1RiTDB4d3o4WWo2aUE9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIQU3ByZWU6OlVzZXIGOwBGWwZpAzggAUkiGXk0MTFIUTdVUktORkh2MzFCeEtFBjsARkkiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsHOg5hbmFseXRpY3NUOgxzdWNjZXNzVDoMQGNsb3NlZEY6DUBmbGFzaGVzewc7CnsIOg1jYXRlZ29yeUkiDENvbnRhY3QGOwBGOgthY3Rpb25JIhFsZWFkX2NhcHR1cmUGOwBGOgpsYWJlbEkiFFNlbGwgTW90b3JjeWNsZQY7AEY7C0kiLFVwbG9hZCBpbWFnZXMgdG8gYWN0aXZhdGUgeW91ciBsaXN0aW5nIQY7AEY6CUBub3cw--c3c1b5d437fd04a80dc888822811d2d4d354ae29',
'image'=>array(new CURLFile('/path/to/file.png','image/png','Screenshot (156).png'))
//and more post data here.

),
CURLOPT_HTTPHEADER=>array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Cache-Control: no-cache',
'Pragma: no-cache',
'Origin: myURL',
//and more headers here
),
CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
));
curl_exec($ch);

нота: это не полный код, он пропускает кучу данных для CURLOPT_POSTFIELD а также CURLOPT_HTTPHEADER , но это должно помочь вам начать

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]