AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2004, 16:40   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Программное скачивание файлов из Internet
Хочу программно скачать файл (не текстовый). Как это сделать?
Функция InternetReadFile() класса WinInet как я понял может работать только с текстовыми файлами. А как же быть если мне надо закачать что-нибудь с расширением dll или exe.
__________________
Дмитрий
Старый 15.09.2004, 18:01   #2  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
Вот реально работающий код на Visual Basic for Applications.
Попробуйте переписать это в Аксапте.
Переменная objxHttp будет иметь тип COM.

ПРИМЕЧАНИЕ: на клиентском компьютере должна быть установлена MS XML 2.0 (msxml.dll)

Данный пример загружает содержимое веб страницы http://www.microsoft.com/BusinessSol...demos/UIc.html и сохраняет его в файл C:\\1.html
Работает в том числе с двоичными файлами.

PHP код:

Public Sub GetFileFromServer()
    
Dim b() As Byte
    Dim objXHTTP 
As Object
    
    Set objXHTTP 
CreateObject("MSXML2.XMLHTTP")
    
    
objXHTTP.Open "GET""http://www.microsoft.com/BusinessSolutions/content/demos/Retaildemos/UIc.html"False
    
    objXHTTP
.send
    
    b 
objXHTTP.responseBody
    
    Open 
"C:\\1.html" For Binary Access Write As #1
        
Put #1, , b
   
    
Close #1
    
    
MsgBox "Ok"
    
End Sub 
__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
Старый 15.09.2004, 18:27   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Хм.... чтобы скачать файл из инета требовать от пользователя наличия msxml.dll слишком жестоко

PHP код:

static void Job3(Args _args)
{
    
WinInet  inet = new WinInet();
    
int      hdl;
    
str      content;
    
BinaryIO       _io;
    ;
    
hdl inet.internetOpenUrl('http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetopenurl.asp');
    
content inet.internetReadFile(hdl);
    
_io = new BinaryIO('c:\\test.file''W');
    
_io.write(content);

Старый 15.09.2004, 18:29   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
наверное, не получится напрямую использовать это из axapta, т.к. строки в ней не юникодные - придется писать обертку.

можно использовать например, wget.

кстати у flashget тоже есть COM интерфейс
Старый 15.09.2004, 18:34   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Прошу прощения, обшибся - при сохранении нетекстовых файлов действительно добавляется какая-то служебная информация.
Попробую разобраться.
Старый 16.09.2004, 09:28   #6  
simply2double is offline
simply2double
Участник
Аватар для simply2double
 
556 / 19 (2) ++
Регистрация: 08.09.2004
Адрес: alfa cen
[QUOTE]Изначально опубликовано Андре
[B]Хм.... чтобы скачать файл из инета требовать от пользователя наличия msxml.dll слишком жестоко
[PHP]


Уважаемый... посмотрите на любой комп... на котором крутится винда... и есть IE ... и вы будете приятно удивлены... там уже есть пресловутый файл msxml.dll ))) мало того сом компонент, чем он собственно говоря и является... еще и зарегестрирован в реестре )))
Старый 16.09.2004, 09:46   #7  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
Вот работающий код в Аксапте.
Да, и еще нужна msxml2.dll - она по-моему тоже стоит на всех компах, где есть IE 5-й версии.

PHP код:

static void Job2(Args _args)
{
    
COM         objXHTTP;
    
BinData     b = new BinData();
    ;
    
objXHTTP = new COM("MSXML2.XMLHTTP");
    
objXHTTP.Open("GET""http://www.microsoft.com/BusinessSolutions/content/demos/Retaildemos/UIc.html"False);
    
objXHTTP.send();

    
b.setVariant(objXHTTP.responseBody());
    
b.saveFile("c:\\1.html");

__________________
Когда гестапо перекрыло все выходы, Штирлиц вышел через вход!
За это сообщение автора поблагодарили: Oz (2).
Старый 16.09.2004, 13:03   #8  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Уважаемый... посмотрите на любой комп... на котором крутится винда... и есть IE ... и вы будете приятно удивлены... там уже есть пресловутый файл msxml.dll ))) мало того сом компонент, чем он собственно говоря и является... еще и зарегестрирован в реестре )))
Не, удивлен я не буду. Хотя недавно был случай, когда у одного из посетителей форума эта dll-ка не была зарегистрирована. Вот здесь это было.

Скорее дело в том, что хотелось решить задачу с использованием минимума технологий (COM, XML и т.д.). В идеале с использованием одного WinAPI. Однако покопавшись на форуме, нашел собственное сообщение здесь . Посмотрел WinInet - с тех ничего не поменялось. Так что пожалуй соглашусь с Вами - в данном случае лучше не заморачиваться и пользоваться COM.
Старый 28.09.2004, 12:36   #9  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Посмотрел ваши ответы только вчера, извещение о присланных сообщениях на мою тему что-то у меня перестало работать.
Спасибо, воспользовался вашим советом, всё заработало.
__________________
Дмитрий
Старый 30.03.2006, 17:03   #10  
krzak is offline
krzak
krzak
 
1 / 10 (1) +
Регистрация: 30.03.2006
Isn't it that IE 5.5 is in requirements for Axapta ? Isn't it mentioned in all documents and prerequirements papers ?

PS. Sorry, I can read russian language, but can't write it
Старый 30.03.2006, 17:19   #11  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
IE 5.5 не является обязательным для Аксапты
Но если у Вас нет IE версии 5.5 или более поздней, то для того, чтобы закачать файл из интернета надо использовать не MSXML2.XMLHTTP, а какой-то другой способ.
Какой - я к сожалению не могу подсказать
Старый 31.03.2006, 18:46   #12  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
winapi + wget !?

PS: kachajet vse, chto ugodno...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Launching and closing Internet Explorer Blog bot DAX Blogs 1 09.04.2009 23:59
сортировка файлов ZVV DAX: Программирование 12 20.10.2008 19:56
AXAPTA 2.5 SP3 и Internet Explorer 7.0 Владимир Максимов DAX: Прочие вопросы 6 30.05.2007 12:51
Business, COM, Internet connector Andrew Besedin DAX: Прочие вопросы 4 31.07.2002 16:50
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:38.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.