|
|
|
Отправка 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) во ппц, спасибо. в этом и был весь прикол
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |