Имя: Пароль:
1C
1С v8
Post запрос с отправлением картинки
0 Snikersik
 
23.10.19
12:32
По вот этому примеру нужно сделать post запрос.

<?php // INPUT $user = ''; $secret = ''; $image_path = ''; // WORK $sign = $user . md5_file($image_path) . $secret; $sign = md5($sign); $data = [ 'login' => $user, 'image' => curl_file_create($image_path), 'sign' => $sign, ]; $ch = curl_init('https://media.sms-online.com/upload/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = json_decode(curl_exec($ch), true); curl_close($ch); if (!empty($result['image_id'])) { $imageId = $result['image_id']; } else { throw new \Exception($result['error'], [], $result['status']); }

Все бы хорошо, но не видит картинку {
  "status": 1,
  "error": "Mandatory parameters missing: image"
}

Передавал двоичные данные, Base64 , что только не передавал, даже просто путь картинки.
Вопрос в чем, может кто знает, что делает вот этот запрос - curl_file_create($image_path), он создает объект CURLFile, а вот что именно в этом объекте, как передать это в 1с?
1 ДенисЧ
 
23.10.19
12:35
Мда... Птичий язык какой-то... Wtite-only...
2 Garykom
 
гуру
23.10.19
12:43
(0) Могу дат полезную ссылку, но сразу скажу не поможет.
https://tools.ietf.org/html/rfc2616
3 Snikersik
 
23.10.19
14:35
(2) Нужно отправить картинку, но двоичные данные не видити, Base64строка(Новый ДвоичныеДанные(моякартинка)) так же не видит, путь просто картинки аналогично. Тех. поддержка прислала пример, в PHP получается сделать так, а вот через 1с пока нет..
4 sitex
 
naïve
23.10.19
14:49
(0) ну может код покажешь сообществу что передаешь или будем толпой гадать что у тебя там ?
5 arsik
 
гуру
23.10.19
14:51
(0) Пусть тебе дадут пример с консольным curl-ом. Дальше сам все поймешь.
6 Snikersik
 
23.10.19
14:53
Сайт = "media.sms-online.com";
Parameters = New Structure;
Parameters.Insert("login",Логин);
Parameters.Insert("image",Картинка);
Parameters.Insert("sign",ХешСигн);


HTTPСоединение = Новый HTTPСоединение(Сайт,,,,,,Новый ЗащищенноеСоединениеOpenSSL);

HTTPЗапрос  = Новый HTTPЗапрос("/upload/");
Запись             = Новый ЗаписьJSON;
ПараметрыJSON     = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " "Истина);  
Запись.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(Запись, Parameters);
ЗаписьJSON = Запись.Закрыть();

HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data;boundary=");

HTTPЗапрос.УстановитьТелоИзСтроки(ЗаписьJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);

ОтветHTTP = HTTPСоединение.Post(HTTPЗапрос);
7 Snikersik
 
23.10.19
14:57
(6) HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data"); *******
8 sitex
 
naïve
23.10.19
14:57
(6)кури заголовки....
9 sitex
 
naïve
23.10.19
15:00
(6) И вообщем посмотри как картинка выглядит в base64. Онлайн ресурсов перевода картинки в строку полно .
10 Snikersik
 
23.10.19
15:03
(9) Переводил в base64 , кидал в RESTED на проверку , все равно не видит image