Имя: Пароль:
1C
1С v8
Ошибка при чтении xml с сайта
,
0 vasiliskas
 
05.02.15
17:33
Друзья! Пытаюсь прочитать xml (платформа 8.3.5.1383),
код простой:

    ПолныйПутьКФайлу = "http://www.НАШСАЙТ.РУ/НАШФАЙЛ.xml";;        
    Чт = Новый ЧтениеXML;
    Чт.ОткрытьФайл(ПолныйПутьКФайлу); //получаю ЧтениеXML
        Чт.Прочитать(); //вылетает с ошибкой

Сообщение об ошибке:
Ошибка разбора XML:  - [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: http://www.НАШСАЙТ.РУ/НАШФАЙЛ.xml


есть предположение что файл слишком большой, подскажите как это побороть??
1 vasiliskas
 
05.02.15
17:34
ПолныйПутьКФайлу как то странно запостилось сюда, там просто полный адрес сайта http://www.НАШСАЙТ.РУ/НАШФАЙЛ.xml
2 mehfk
 
05.02.15
17:36
3 ShoGUN
 
05.02.15
17:36
(0) Получить файл HTTP-запросом, потом уже читать?
4 vasiliskas
 
05.02.15
17:38
(2) если файл сохранить и ничего в нем не редактировать то он читается нормально, без ошибок. так что есть предположение, что сам файл нормальный а ошибку он выдает потому что не успевает весь его получить с сайта
5 mehfk
 
05.02.15
17:38
(2)+ Кроме того, у меня есть сомнения, что в качестве имени файла можно указывать его адрес на http
6 vasiliskas
 
05.02.15
17:39
(3) спасибо, сейчас попробую
7 ShoGUN
 
05.02.15
17:40
СоединениеССервисом = Новый HTTPСоединение(Домен,80);
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Host",Домен);
    ЗапросКСервису = Новый HTTPЗапрос;
    ЗапросКСервису.АдресРесурса = АдресНаСервере;
    ЗапросКСервису.Заголовки = Заголовки;
    Попытка
        Ответ = СоединениеССервисом.Получить(ЗапросКСервису);
        Сообщить(Ответ.КодСостояния);
        ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
        //Сообщить(ТелоОтвета);
        ТекстОтвета = Новый ТекстовыйДокумент;
        ТекстОтвета.УстановитьТекст(ТелоОтвета);
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.УстановитьСтроку(ТелоОтвета);
    Исключение
        Сообщить(ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
    КонецПопытки;
8 ShoGUN
 
05.02.15
17:41
Как-то так, код рабочий, проверялся. Переменные некоторые не инициализированы(передаются в функцию), но по смыслу всё понятно.
9 ShoGUN
 
05.02.15
17:44
ТекстОтвета = Новый ТекстовыйДокумент;
        ТекстОтвета.УстановитьТекст(ТелоОтвета);

Это можно выкинуть, для отладки юзалось.
10 vasiliskas
 
05.02.15
19:15
(8) Спасибо! но почему то не работает
мой адрес вот
"http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml";
Домен = "http://www.ecb.europa.eu";
АдресНаСервере = "stats/eurofxref/eurofxref-hist.xml"

Ответ не получаю попадаю в исключение описание ошибки пусто
11 ShoGUN
 
05.02.15
21:17
(10) Мне по ссылке выдаёт 404. Тупо браузером. Имя/путь проверьте.
12 ShoGUN
 
05.02.15
21:18
+(11) А, пардон, получил. Ща проверю получение 1с-кой.
13 ShoGUN
 
05.02.15
21:31
Две ошибки в параметрах :)
- Домен указывается без префикса протокола: "http://www.ecb.europa.eu"; => "http://www.ecb.europa.eu";
- Слэш после имени домена является частью адреса ресурса на сервере: "stats/eurofxref/eurofxref-hist.xml" => "/stats/eurofxref/eurofxref-hist.xml"

Я файл успешно скачал после этих исправлений.
14 ShoGUN
 
05.02.15
21:32
Блин, кривой парсер ссылок ( в общем указывать адрес надо без "http://";
15 vasiliskas
 
06.02.15
10:05
(14) действительно работает!! спасибо!
Домен у меня тоже без префикса протокола был, а вот из-за слэша не грузилось ничего!