| 
    
        
     
     | 
    
  | 
Ошибка разбора 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) :) Есть
 
        ПолучениеФайловИзИнтернета.СкачатьФайл() ПолучениеФайловИзИнтернетаКлиент.СкачатьФайлНаКлиенте()  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |