Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: WinHttp. Импорт фотографии...

v7: WinHttp. Импорт фотографии...
Я
   palpetrovich
 
01.04.19 - 17:13
Из "инструкции":
Для импорта фотографии пользователя нужно отправить POST запрос на URI /api/rest.php/auth/users?action=update-user-photo
к запросу должен быть прикреплен файл в формате изображения (png, jpg, gif) в теле запроса должен быть указана uid пользователя. Запрос должен содержать загловоки Content-Type: multipart/form-data и Authorization: Bearer xxxxxx. Пример запроса:
curl 'http://localhost:8080/api/rest.php/auth/users?action=update-user-photo' -H 'Authorization: Bearer xxxxxx' -H 'Content-Type: multipart/form-data' -F 'uid=some-user-uid' -F 'file=@/path/to/photo.jpg'

"curl"  на предприятии не используется, работаем по WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
вот так:
WinHttp.SetRequestHeader("Authorization", "Bearer " + jwt_token); // jwt_token получаем при авторизации
WinHttp.setRequestHeader("Content-type", "multipart/form-data");
WinHttp.Send(uid); // 'uid=C83FD6CC59994F2717F7AFDBE428FE2F'
Если WinHttp.Status <> 200 Тогда  // тут вываливаемся по {"no_user_id":{"user_id":"Required field user_id or uid"}}  Status: 400, хотя uid - 100% верный
    Возврат WinHttp.ResponseText();
КонецЕсли;
WinHttp.Send(file); // сюда не доходим

Может я неверно интерпретирую опцию "-F"? Не нашел ничего про нее, тупо делаю "WinHttp.Send(uid)"
Вот "-H"  это SetRequestHeader , что  "-F"???
 
 
   Вафель
 
1 - 01.04.19 - 17:17
ты 2 раза делаешь сенд, а нужно 1 раз, но малтипарт
   palpetrovich
 
2 - 01.04.19 - 17:20
(1)  а разве вот это не 2 раза?
-F 'uid=some-user-uid' -F 'file=@/path/to/photo.jpg'
   Вафель
 
3 - 01.04.19 - 17:21
(2) это 2 значения
   Kigo_Kigo
 
4 - 01.04.19 - 17:23
а где WinHttp.open(Метод, URL, 0); ?
   palpetrovich
 
5 - 01.04.19 - 17:23
(4) он есть, выше :)
   Kigo_Kigo
 
6 - 01.04.19 - 17:23
Метод = "GET" или POST
   palpetrovich
 
7 - 01.04.19 - 17:24
(6) WinHttp.Open("POST", URLЗапроса, 0);
   Kigo_Kigo
 
8 - 01.04.19 - 17:30
   Kigo_Kigo
 
9 - 01.04.19 - 17:31
   Kigo_Kigo
 
10 - 01.04.19 - 17:31
   Вафель
 
11 - 01.04.19 - 17:33
малтипарт нельзя методом гет
   palpetrovich
 
12 - 01.04.19 - 17:38
(10) похоже ты мне подсказал что не так ... я какого-то https вместо http использовал для URLЗапроса ... проверяю
   palpetrovich
 
13 - 01.04.19 - 17:40
+(12) новое что-то :)
 "Permission denied"  Status: 403
   palpetrovich
 
14 - 01.04.19 - 17:56
+(13) а теперь на WinHttp.Send(uid) все время - 
WinHttp.WinHttpRequest: Невозможно создать файл, так как он уже существует

Какой файл???
   Kigo_Kigo
 
15 - 01.04.19 - 18:02
uid , что отправляешь?
   Kigo_Kigo
 
16 - 01.04.19 - 18:05
Сюда уже доходит?
Может ты пытаешься засунуть файл который ты уже засунул, а перезаписать не дает?
WinHttp.Send(file);// сюда не доходим
   palpetrovich
 
17 - 01.04.19 - 19:29
(16) нет
WinHttp.Send(uid): 'uid=C83FD6CC59994F2717F7AFDBE428FE2F'
*Исключение* WinHttp.Send(uid) WinHttp.WinHttpRequest: Невозможно создать файл, так как он уже существует.

Если WinHttp.Status <> 200 Тогда
 WinHttp.WinHttpRequest: Данные, необходимые для завершения этой операции еще не доступны
   palpetrovich
 
18 - 01.04.19 - 19:56
"Невозможно создать файл, так как он уже существует." - не то, это я вот это засунул зачем-то:
WinHttp.setRequestHeader("Content-type", "application/json;charset=UTF-8"); 
без этого,  ответ 
"Permission denied"  Status: 403
.."доступ запрещен"
   Сияющий в темноте
 
19 - 01.04.19 - 21:59
я бы лучше попробовал через ServerXmlHttpRequest.
   trad
 
20 - 01.04.19 - 23:06
(19) ничего не поможет, если посылать все что угодно, но не multipart/form-data когда требуется multipart/form-data

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.