V7HttpReader метод получить файл.

1. Goruch 11 18.11.13 17:36 Сейчас в теме
С помощью метода ПолучитьКакФайл пытаюсь с сайта выгрузить файл xml нужного формата. Проблема - файл не загружается полностью.
Код:
ХТТПСоединение = СоздатьОбъект("AddIn.V7HttpReader");
ХТТПСоединение.КоличествоПопытокАвторизации = 3;
ХТТПСоединение.Пользователь("admin","Tester1");
Стр = "";
ХТТПСоединение.ПолучитьКакФайл("http://www.********=19.11.2013&login=admin&password=Tester1",СокрЛП(КаталогИБ()) + "заказы.xml");

Пробовал по всякому и через ПолучитьКакСтроку и с циклом после получения (типа для докачивания, если оно в фоне).
Все-равно файл загружается не полностью. Если через браузер все скачивается без проблем. Вес файла не более 5 килобайт.
Кто сталкивался, как решить подобную задачу?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. DJDUH 17 18.11.13 18:10 Сейчас в теме
(1) Goruch, А файл готовый на сайте? Если да, может есть смысл попробовать, что-то типа ФТП!?
7. Goruch 11 18.11.13 18:14 Сейчас в теме
(6)
В том то весь и смысл что он с помощью команды генерируется. Там задается период.
2. kuzev 48 18.11.13 17:57 Сейчас в теме
Попробуй добавить
ХТТПСоединение.УдалитьЗаголовкиЗапроса();
перед
ХТТПСоединение.ПолучитьКакФайл()
4. Goruch 11 18.11.13 18:01 Сейчас в теме
(2) Попробовал, тоже самое, никаких изменений.
3. kuzev 48 18.11.13 18:01 Сейчас в теме
И еще. Метод ПолучитьКакФайл() считается устаревшим и является частным случаем метода Получить() (подробности здесь: источник). Заодно проверь "свежесть" используемых dll.
5. Goruch 11 18.11.13 18:09 Сейчас в теме
(3)
Попробовал все, поставил самую свежую длл.
Попробовал через Получить, все аналогично.
8. kuzev 48 18.11.13 18:14 Сейчас в теме
Тут вот твоя тема описана немного: http://infostart.ru/public/60330/. Думаю, поможет в принятии правильного решения. Просто "в лоб" этой компонентой пользоваться нельзя.
10. Goruch 11 18.11.13 18:23 Сейчас в теме
(8) Спасибо! Помогло.
Для таких же горемык как я, делается это так:
	Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
	Скрипт.language = "vbscript";
		  
	x = CreateObject("Microsoft.XMLHTTP");
	x.Open("GET", АдресСтраницы, 0,"","");
	x.Send();
		  
	s = CreateObject("ADODB.Stream");
	s.Mode = 3;
	s.Type = 1;
	s.Open();
		  
	Скрипт.AddObject("s",s);
	Скрипт.AddObject("x",x);
	Скрипт.Eval("s.Write(x.responseBody)");
		  
	s.SaveToFile(ИмяФайлаЗагрузки, 2);
Показать
Gnevyshev_an; zarius; selesta; phsin; +4 Ответить
16. phsin 183 30.01.14 13:19 Сейчас в теме
(10) Goruch, спасибо! помогло!
17. Goruch 11 30.01.14 13:54 Сейчас в теме
(16)
Пожалуйста.
За мою многолетнюю практику 1С-ника столкнулся с таким количеством граблей, на которые пришлось наступить и зачастую не раз. А на самом деле все очень легко решается. Хоть заводи отдельную статью "Грабли" и описывай все минипроблемки и пути решения.:)))
andreykfk; +1 Ответить
18. alexvbard 21 19.03.17 14:27 Сейчас в теме
(10) Огромнейшее спасибо! Помогло очень и очень сильно!
9. kuzev 48 18.11.13 18:16 Сейчас в теме
11. andrewks 1375 18.11.13 19:51 Сейчас в теме
v7plus.dll - глюкавая поделка, нежелательно её использовать
12. Кошки рулят 19.11.13 05:09 Сейчас в теме
(11) andrewks, ересь
(1) Goruch,
С помощью метода ПолучитьКакФайл пытаюсь с сайта выгрузить файл xml нужного формата.

Кто на ком стоял?
Пиши по-русскому языкому, если хочешь чтобы тебя можно понять.
Пытаться с помощью ПолучитьКакФайл выгрузить файл с сайта - это как про сон сказать, что это не сон, а про не сон - сон (с) Алладин. В результате обязательно получится пронесон, что, собственно, и наблюдается в твоем случае ...

Вот кусок кода моего Инернет-Магазина:
	Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
		Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "v7plus.dll") <> 1 Тогда
			Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
				Предупреждение("Компонента v7plus.dll не найдена!", 60);
				Возврат;
			КонецЕсли;	
		КонецЕсли;
	КонецЕсли;          
	
	Попытка
		Соединение = СоздатьОбъект("Addin.V7HttpReader") ;
		Соединение.КоличествоПопытокАвторизации = 3;
	Исключение 
		Сообщить("Не удалось создать объект Addin.V7HttpReader!");
		Возврат;
	КонецПопытки; 
	ВремКаталог = КаталогВременныхФайлов();  
	Попытка                     
		Соединение.ПолучитьКакФайл(АдресРесурса+"katalogim.xml",ВремКаталог+"katalogim.xml");   
		СпЗагруженныхФайлов.ДобавитьЗначение("Файл",ВремКаталог+"katalogim.xml");
	Исключение 
		Сообщить("Неудачная попытка соединения.");
		Сообщить(Соединение.СтрокаСостоянияОтвета) ;
		Возврат;                   
	КонецПопытки;
	Если ФС.СуществуетФайл(ВремКаталог+"katalogim.xml")=0 Тогда
		Сообщить("Не удалось получить ответ с сайта. Проверьте интернет соединение."); 
		Возврат;
	КонецЕсли;  

		
	xmlАнализатор = СоздатьОбъект("AddIn.XMLParser");
	xmlФайл = xmlАнализатор.СоздатьПоследовательноСчитываемыйДокумент();
	xmlФайл.СвязатьСФайлом(ВремКаталог+"katalogim.xml");
	ТипТега = xmlФайл.Спуститься();
	Пока ТипТега <> 4 Цикл		//	пока не достигнут конец файла
		Если ТипТега <> 1 Тогда
			ТипТега = xmlФайл.Следующий();
			Продолжить;
		КонецЕсли;				
		
		ИмяТега = xmlФайл.СвойстваТекущегоУзла.Имя;     
		
		Если ИмяТега = "КаталогИМ"		Тогда
			ТипТега = xmlФайл.Спуститься();      
			Продолжить;
...
		ИначеЕсли ИмяТега="Файл" Тогда  
			ПутьКФайлу=""+xmlФайл.ТекущийЭлементВВидеОбъекта().Значение;
			НазвФайла=СтрЗаменить(СтрЗаменить(ПутьКФайлу,"/",""),""+ТаблОсн.КодТовара,""); 
			Если ФС.СуществуетФайл(ВремКаталог+ТаблОсн.КодТовара+"\")=0 Тогда
			    ФС.СоздатьКаталог(ВремКаталог+ТаблОсн.КодТовара); 
				СпЗагруженныхФайлов.ДобавитьЗначение("Каталог",ВремКаталог+ТаблОсн.КодТовара);
			КонецЕсли; 
			Если ФС.СуществуетФайл(ВремКаталог+ПутьКФайлу)=0 Тогда
				Попытка                     
					Соединение.ПолучитьКакФайл(АдресРесурса+ПутьКФайлу,ВремКаталог+ПутьКФайлу);   
					СпЗагруженныхФайлов.ДобавитьЗначение("Файл",ВремКаталог+ПутьКФайлу);
				Исключение 
					Сообщить("Неудачная попытка соединения.");
					//Сообщить(Соединение.СтрокаСостоянияОтвета) ;
				КонецПопытки;
				Если ФС.СуществуетФайл(ВремКаталог+ПутьКФайлу)=0 Тогда
					Сообщить("Не удалось получить изображение с сайта. Проверьте интернет соединение."); 
				КонецЕсли;  
			КонецЕсли;
			СпКартинок.ДобавитьЗначение(ВремКаталог+ПутьКФайлу,ПодписьКСкану);
			ПодписьКСкану="";
			ТаблОсн.Картинка=СпКартинок;
		КонецЕсли; 
		
		ТипТега = xmlФайл.Следующий();
		
	КонецЦикла;
Показать

Все работает. Сначала обработка получает файл xml, разбирает его и докачивает картинки по адресам из этого же файла.
Что я делаю не так?
13. Goruch 11 19.11.13 11:16 Сейчас в теме
(12)
Какой вы однако, к словам придираетесь. По-моему я достаточно ясно отписал, у всех кроме вас никаких проблем с осознанием смысла моего высказывания не возникает.
Касасательно:
 Соединение.ПолучитьКакФайл(АдресРесурса+"katalogim.xml",ВремКаталог+"katalogim.xml"); 


Это не работает, когда динамически генерируется страница через пост-запрос. ПолучитьКакФайл работает для скачивания ТОЛЬКО статического содержимого. О чем и было сказано выше.
Вместо того, чтобы просто как-то вчитаться и осознать что написано, вы оскорбляете. Нехорошо это.
14. Кошки рулят 19.11.13 12:18 Сейчас в теме
(13) Goruch, Вздор распространяешь. Причем, безапелляционный и самоуверенный.
Методы v7plus работают стабильно и в соответствии с заявленным функционалом. Не надо катить на dll безграмотную чепуху.
Обращение к серверу с параметрами в ожидании возврата от него строки/файла делается совсем не так.
Например, так: http://snegovic8-8.narod.ru/ или так, как сделана загрузка курсов валют в типовых конфигурациях.
В любом случае, 1С тут не при делах - что сервер дает, то она и получает. А если на сервере кривые руки, то никакие скрипты их не выправят ...
15. Goruch 11 19.11.13 12:24 Сейчас в теме
(14)
Почему через браузер я получаю по ссылке нормальный xml файл, а через длл получаю обрезанный xml файл? Весь порядок действий описал.
А прежде чем о чем-то говорить почитай, что пишут http://infostart.ru/public/60330/ .
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот