|
v7: WinHttp. Импорт фотографии... | ☑ | ||
---|---|---|---|---|
0
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 раз, но малтипарт
|
|||
2
palpetrovich
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 значения
|
|||
4
Kigo_Kigo
01.04.19
✎
17:23
|
а где WinHttp.open(Метод, URL, 0); ?
|
|||
5
palpetrovich
01.04.19
✎
17:23
|
(4) он есть, выше :)
|
|||
6
Kigo_Kigo
01.04.19
✎
17:23
|
Метод = "GET" или POST
|
|||
7
palpetrovich
01.04.19
✎
17:24
|
(6) WinHttp.Open("POST", URLЗапроса, 0);
|
|||
8
Kigo_Kigo
01.04.19
✎
17:30
|
а если так запрос отправить?
http://localhost:8080/api/rest.php/auth/users?action=update-user-photo?uid=C83FD6CC59994F2717F7AFDBE428FE2F |
|||
9
Kigo_Kigo
01.04.19
✎
17:31
|
||||
10
Kigo_Kigo
01.04.19
✎
17:31
|
||||
11
Вафель
01.04.19
✎
17:33
|
малтипарт нельзя методом гет
|
|||
12
palpetrovich
01.04.19
✎
17:38
|
(10) похоже ты мне подсказал что не так ... я какого-то https вместо http использовал для URLЗапроса ... проверяю
|
|||
13
palpetrovich
01.04.19
✎
17:40
|
+(12) новое что-то :)
"Permission denied" Status: 403 |
|||
14
palpetrovich
01.04.19
✎
17:56
|
+(13) а теперь на WinHttp.Send(uid) все время -
WinHttp.WinHttpRequest: Невозможно создать файл, так как он уже существует Какой файл??? |
|||
15
Kigo_Kigo
01.04.19
✎
18:02
|
uid , что отправляешь?
|
|||
16
Kigo_Kigo
01.04.19
✎
18:05
|
Сюда уже доходит?
Может ты пытаешься засунуть файл который ты уже засунул, а перезаписать не дает? WinHttp.Send(file); // сюда не доходим |
|||
17
palpetrovich
01.04.19
✎
19:29
|
(16) нет
WinHttp.Send(uid): 'uid=C83FD6CC59994F2717F7AFDBE428FE2F' *Исключение* WinHttp.Send(uid) WinHttp.WinHttpRequest: Невозможно создать файл, так как он уже существует. Если WinHttp.Status <> 200 Тогда WinHttp.WinHttpRequest: Данные, необходимые для завершения этой операции еще не доступны |
|||
18
palpetrovich
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.
|
|||
20
trad
01.04.19
✎
23:06
|
(19) ничего не поможет, если посылать все что угодно, но не multipart/form-data когда требуется multipart/form-data
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |