|
Отправка xml файла с помощью multipart/form-data | ☑ | ||
---|---|---|---|---|
0
location
naïve
14.11.24
✎
15:34
|
Добрый день. Подскажите пож-та, не могу понять чего не хватает 1с, чтобы отправить файл. Через Postman файл отправляется
snipped code POST /~/upload HTTP/1.1 Host: apiv1.com Content-Type: multipart/form-data; boundary=44078d1ff6534067a865f58aeea2de0b Storage-Token: 5d******99dff --44078d1ff6534067a865f58aeea2de0b Content-Disposition: form-data; name="file"; filename="stocks.xml" Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <items> <item> <rzcode>23</rzcode> <code>11</code> <barcode>12321</barcode> <cat>fff</cat> <brand>bbb</brand> <title>Name</title> <price/> <rrc/> <qty/> <available>0</available> </item> </items> --44078d1ff6534067a865f58aeea2de0b Content-Disposition: form-data; name="path" / --44078d1ff6534067a865f58aeea2de0b-- сам код выглядит так Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-",""); ТелоЗапроса = Новый ТекстовыйДокумент(); ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF; ТелоЗапроса.ДобавитьСтроку("--" + Разделитель); ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""file""; filename=""stocks.xml"""); ТелоЗапроса.ДобавитьСтроку("Content-Type: application/xml"); ТелоЗапроса.ДобавитьСтроку(""); // ЗаписьДанных.ЗаписатьСтроку(ДвоичныеДанные); ТелоЗапроса.ДобавитьСтроку(СтрXML); ТелоЗапроса.ДобавитьСтроку(""); ТелоЗапроса.ДобавитьСтроку("--" + Разделитель); ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""path"""); ТелоЗапроса.ДобавитьСтроку(""); ТелоЗапроса.ДобавитьСтроку("/"); ТелоЗапроса.ДобавитьСтроку("--"+Разделитель+"--"); ТелоЗапроса.ДобавитьСтроку(""); ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст(); Host = "apiv1.com"; GetTokenURL = "~/upload"; Заголовки = Новый Соответствие; Заголовки.Вставить("Storage-Token", "5d******99dff"); Заголовки.Вставить("Content-Type","multipart/form-data; boundary =" + Разделитель); HTTPЗапрос = Новый HTTPЗапрос(GetTokenURL, Заголовки); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока); Соединение = Новый HTTPСоединение(Host,,,,,,Новый ЗащищенноеСоединениеOpenSSL); ЧтениеJSON = Новый ЧтениеJSON; Попытка HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос); // post запрос Ответ = HTTPОтвет.ПолучитьТелоКакСтроку(); Исключение ТекстОшибки = "API Хостинга|"+ОписаниеОшибки(); ЗаписьЖурналаРегистрации("обмен остатками",УровеньЖурналаРегистрации.Ошибка,,,ТекстОшибки); КонецПопытки; если вставлять ТелоЗапросаСтрока как Body в Postman все отлично отправляется а с 1с выдает ошибку Not Allowed, как будто нет доступа не проходит авторизацию |
|||
1
Asmody
14.11.24
✎
15:40
|
может
GetTokenURL = "/~/upload"; |
|||
2
Garykom
гуру
14.11.24
✎
15:44
|
угу, вряд ли есть сервер "apiv1.com~"
|
|||
3
location
naïve
14.11.24
✎
15:44
|
(1) нет так тоже Ошибка "Not allowed"
|
|||
4
Garykom
гуру
14.11.24
✎
15:49
|
еще порядок Content-Type и Storage-Token не совпадает
|
|||
5
location
naïve
14.11.24
✎
15:49
|
(2) замените apiv1.com
XXXXxXXXxxxXxXXx.cdn.express не важно. Токен например с такими параметрами отлично получается Host = "apiv1.com"; GetTokenURL = "~/action/storage/auth/login/"; вот пример curl curl -v -H 'Storage-Token: token' -F file='@/path/to/local/file.ext' -F path='/' 'https://XXXXxXXXxxxXxXXx.cdn.express/~/upload' |
|||
6
location
naïve
14.11.24
✎
15:50
|
(4) где не совпадает
|
|||
7
Garykom
гуру
14.11.24
✎
15:51
|
Content-Type: multipart/form-data; boundary=44078d1ff6534067a865f58aeea2de0b и "Content-Type","multipart/form-data; boundary =" + Разделитель пробел лишний перед = |
|||
8
Garykom
гуру
14.11.24
✎
15:53
|
https://XXXXxXXXxxxXxXXx.cdn.express/~/upload'
обрати внимание что после express идет / перед ~ это / должно быть первым в GetTokenURL |
|||
9
Garykom
гуру
14.11.24
✎
15:54
|
(6) хз вряд ли порядок заголовков важен
но в Postman у тебя сначала Content-Type, затем Storage-Token в 1С наоборот |
|||
10
Garykom
гуру
14.11.24
✎
15:56
|
поставь уже сниффер, лови и сравнивай постман/курл и 1С
|
|||
11
location
naïve
14.11.24
✎
15:57
|
(7) во ппц, спасибо. в этом и был весь прикол
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |