|
Ошибка разбора XML | ☑ | ||
---|---|---|---|---|
0
Chebchic1
14.02.25
✎
09:30
|
Добрый всем читающим.
Нужно разобрать 6 различных xml от поставщиков (формат почти совпадает). Два отрабатывают нормально, у четырех ошибка: [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка разбора XML: - [1,50] Фатальная ошибка: Space required after the Public Identifier SystemId: http://export.hyundai-direct.biz/yml_get/tbky2fcth2pg кеш пользователя и сервера чистил - не помогло. Может что кто подскажет? |
|||
1
Волшебник
14.02.25
✎
09:38
|
может пробельчик добавить?
|
|||
2
Chebchic1
14.02.25
✎
10:43
|
куда? хмл формирую не я
|
|||
3
Волшебник
14.02.25
✎
10:45
|
сделайте предварительную обработку полученного XML
|
|||
4
Chebchic1
14.02.25
✎
10:46
|
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("http://export.hyundai-direct.biz/yml_get/tbky2fcth2pg", ,); ОбъектXDTOизФайла = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); вот код |
|||
5
Волшебник
14.02.25
✎
10:49
|
так это не XML, а YML
|
|||
6
arsik
гуру
14.02.25
✎
10:50
|
(2) Ты их читаешь сразу через веб? Попробуй скачать и из файла прочитать.
Если работает - тогда тебе сервер почему то не отдает. |
|||
7
arsik
гуру
14.02.25
✎
10:53
|
(4) Хмм. Вроде как xml через редиректы отдает. Смотри в мануале, как это файл правильно получить.
|
|||
8
Voronve
14.02.25
✎
11:27
|
(0) "Два отрабатывают нормально"
у тебя в них в начале есть строчка "<?xml version="1.0" encoding="UTF-8"?> - стандартный заголовок XML; ЧтениеXML такое открывает корректно "у четырех ошибка" у остальных такой строчки нет, ЧтениеXML обламывается. надо открывать как DOMДокумент |
|||
9
Chebchic1
14.02.25
✎
11:35
|
ошибка возникает на строке
ОбъектXDTOизФайла = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Как сделать предварительную обработку? Перебрать файл последовательно? |
|||
10
Chebchic1
14.02.25
✎
11:36
|
(8) попробую
|
|||
11
Fedor-1971
14.02.25
✎
12:31
|
(10) лучше сначала получи чудо-юдо через HTTP в виде строки,
проверь оный на корректность и потом скармливай чтению XML Примерно так: локСоединение = новый HTTPСоединение("http://export.hyundai-direct.biz"); ЗапросЗапцацак = Новый HTTPЗапрос("/yml_get/tbky2fcth2pg"); Результат = локСоединение.Получить(ЗапросЗапцацак); Если Результат.КодСостояния = 200 тогда чтоПолучили = Результат.ПолучитьТелоКакСтроку(); ... тут извращаешься как нравится .... В теории, тебе могут отдать JSON или форматированный текст нов = новый ЧтениеXML; нов.УстановитьСтроку(чтоПолучили); КонецЕсли; |
|||
12
Chebchic1
14.02.25
✎
13:29
|
(11) час от часу...
[ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка работы с Интернет: Couldn't resolve host name [ОшибкаСети] если так делаю |
|||
13
Волшебник
14.02.25
✎
13:32
|
там протокол HTTPS
https://export.hyundai-direct.biz/yml_get/tbky2fcth2pg |
|||
14
arsik
гуру
14.02.25
✎
13:46
|
(12) Там неправильно. Надо вот так.
локСоединение = новый HTTPСоединение("export.hyundai-direct.biz", 443,,,,,Новый ЗащищенноеСоединениеOpenSSL); Да и получит там фигню какую ни будь. Там 2 редиректа, получение куков и уже запрос к основному с этими куками.
|
|||
15
Chebchic1
14.02.25
✎
13:47
|
(14) а так
Результат.КодСостояния = 404 |
|||
16
Garykom
гуру
14.02.25
✎
13:47
|
не проще для новичка КопироватьФайл ?
в темп а затем оттуда читать или КопироватьФайл тоже не умеет в редиректы? |
|||
17
arsik
гуру
14.02.25
✎
13:54
|
(15) Ты что-то напутал. У меня как и нужно 301 возвращает.
|
|||
18
arsik
гуру
14.02.25
✎
14:10
|
Сорян. Там 1 редирект. И куки в принципе не важны.
|
|||
19
Chebchic1
14.02.25
✎
14:31
|
(17) да, сорян, случайно пробел в конце поставил.
Сделал как в (17), так же получил кодсостояния = 301, а дальше то что? как к следующей строке перейти? |
|||
20
Chebchic1
14.02.25
✎
14:31
|
(16) попробовал Копироватьфайл - ничего не сохраняет ни
КопироватьФайл("http://export.hyundai-direct.biz/yml_get/tbky2fcth2pg" ,"e:\1С"); ни КопироватьФайл("https://export.hyundai-direct.biz/yml_get/tbky2fcth2pg" ,"e:\1С"); |
|||
21
Garykom
гуру
14.02.25
✎
14:37
|
(20) эмм
КопироватьФайл (FileCopy)
Синтаксис: КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>) Параметры: <ИмяФайлаИсточника> (обязательный) Тип: Строка. Полное имя файла-источника. <ИмяФайлаПриемника> (обязательный) Тип: Строка. Полное имя файла-приемника. |
|||
22
Ёпрст
14.02.25
✎
14:35
|
||||
23
Garykom
гуру
14.02.25
✎
14:35
|
ну и в браузере если твою ссылку открыть
http://export.hyundai-direct.biz/yml_get/tbky2fcth2pg то в итоге строка получается https://export.hyundai-direct.biz/yml_get/2 |
|||
24
arsik
гуру
14.02.25
✎
14:41
|
(19) Смотри (18)
Можно еще воспользоваться https://github.com/vbondarevsky/Connector - там автоматически редиректы читает |
|||
25
Chebchic1
14.02.25
✎
14:40
|
(22) спасибо
|
|||
26
Chebchic1
14.02.25
✎
14:40
|
(21) блин, файл приемник не дописал, многозадачность - зло, спасибо
|
|||
27
Garykom
гуру
14.02.25
✎
15:03
|
(16)+ КопироватьФайл не умеет в редирект
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://export.hyundai-direct.biz/yml_get/2. target="_blank">http://export.hyundai-direct.biz/yml_get/2." target="_blank">here." target="_blank">http://export.hyundai-direct.biz/yml_get/2">here. <hr> <address>Apache/2.4.55 (Unix) Server at export.hyundai-direct.biz Port 80</address> </body></html>
|
|||
28
arsik
гуру
14.02.25
✎
14:52
|
(27) Апач? Странно как-то.
<address>Apache/2.4.55 (Unix) Server at export.hyundai-direct.biz Port 80</address>
У меня в (17) nginx :) |
|||
29
Garykom
гуру
14.02.25
✎
15:02
|
(28) ты по httpS делал
там вероятно за nginx стоит apache |
|||
30
Chebchic1
14.02.25
✎
15:08
|
(22) обработка в БП 3,0 выдает ошибку [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине: Произошла исключительная ситуация (0x800a004c) [ОшибкаИспользованияВстроенногоЯзыка] |
|||
31
Chebchic1
14.02.25
✎
15:08
|
(24) блин, все по новой переделывать не хотелось бы
|
|||
32
vbus
14.02.25
✎
15:20
|
А что, нельзя так?
curl -L -i https://export.hyundai-direct.biz/yml_get/tbky2fcth2pg -o hynd.txt |
|||
33
Chebchic1
14.02.25
✎
15:16
|
(18) сработало, получил тело как строку, попробую его сейчас в фабрику.
|
|||
34
Chebchic1
14.02.25
✎
15:16
|
(32) куда и как это вписать?
|
|||
35
arsik
гуру
14.02.25
✎
15:18
|
(29) Я так и так попробовал. У меня тоже через "КопироватьФайл " апач ответ отдает. Там конечно в любом случае снаружи нгинкс стоит.
|
|||
36
vbus
14.02.25
✎
15:19
|
windows 10 -> cmd
|
|||
37
arsik
гуру
14.02.25
✎
15:27
|
(32) можно, но только без "-i"
|
|||
38
vbus
14.02.25
✎
15:33
|
(37) Можно и с -i и без -i это заголовки пишет, редиректов.
|
|||
39
arsik
гуру
14.02.25
✎
15:34
|
(38) 🤦
|
|||
40
vbus
14.02.25
✎
15:38
|
(39)
-i, --include Include response headers in output |
|||
41
arsik
гуру
14.02.25
✎
15:44
|
(40) Это уже станет не xml
|
|||
42
Garykom
гуру
14.02.25
✎
15:46
|
А в БП 3.0 нигде (например в БСП) нет готовых процедур/функций для скачивания файлов по http/https c учетом редиректов?
Там же загрузки курсов валют, НСИ и прочие ЭДО |
|||
43
arsik
гуру
14.02.25
✎
15:58
|
(42) :) Есть
ПолучениеФайловИзИнтернета.СкачатьФайл() ПолучениеФайловИзИнтернетаКлиент.СкачатьФайлНаКлиенте() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |