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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.01.2003, 11:17   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Получить курс валют из интернета
Кто нибудь пробовал решить такую задачу ?

Вот накануне набросал на VC:

PHP код:
// 1 - Open
HINTERNET open InternetOpen("RSDN HTTP Reader"INTERNET_OPEN_TYPE_PRECONFIG,  NULLNULL0);

// 2 - Connect
HINTERNET connect InternetConnect(open"www.cbr.ru"INTERNET_DEFAULT_HTTP_PORTNULLNULL,  INTERNET_SERVICE_HTTP,0,1u);

// 3 - OpenRequest
LPCTSTR AcceptTypes[] = { TEXT("*/*"), NULL};
HINTERNET openRequest HttpOpenRequest(connect"GET"
   
"/currency_base/D_print.asp?date_req=05.01.2003"NULL""AcceptTypes,
   (
INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID0
    | 
INTERNET_FLAG_KEEP_CONNECTION1);

// 4 - SendRequest
LPCTSTR headers TEXT("Content-Type: application/x-www-form-urlencoded\r\n"
    "Accept-Language:ru\r\n" "Accept-Encoding:gzip, deflate"
);
BOOL sendRequest HttpSendRequest(openRequestheaders, -1, (LPVOID""0);

// 5 - ReadFile
char     DataBuffer[7000];
DWORD    size 6500;
DWORD       bytesRead ;
BOOL readFile InternetReadFile(openRequestDataBuffersize, &bytesRead);
                    
cout << DataBuffer << endl;
cout << bytesRead << endl
Все работает.

Решил попробовать реализовать это дело в Аксапте:

Есть класс WinInet; в нем есть методы InternetOpen и InternetReadFileб но нет InternetConnect, HttpOpenRequest и многих других мне необходимых.
Ладно думаю, не беда - создам наследника и в нем все это реализую. Не тут то было. WinInet объявлен как final. А почему ? А зачем ? Не понимаю.
Ладно. Создаю свой класс:

PHP код:
void new()
{
    try
    {
        
_winInet = new DLL("WinInet");
    } catch(
Exception::Internal)
    {
        
infolog.clear();
        return;
    }

    
_internetConnect = new DLLFunction(_winInet,"InternetConnect");
    
_internetConnect.returns(ExtTypes::DWORD);
    
_internetConnect.arg(ExtTypes::DWORD);         // HINTERNET
    
_internetConnect.arg(ExtTypes::STRING);        // ServerName
    
_internetConnect.arg(ExtTypes::DWORD);         // ServerPort = 80
    
_internetConnect.arg(ExtTypes::STRING);        // UserName
    
_internetConnect.arg(ExtTypes::STRING);        // Password
    
_internetConnect.arg(ExtTypes::DWORD);         // Service
    
_internetConnect.arg(ExtTypes::DWORD);         // Flags
    
_internetConnect.arg(ExtTypes::DWORD);         // Context

При попытке создать этот класс Axapta ругается:

DLL function not found InternetConnect.

Как не найдена. MSDN говорит, что она в той же dll-ке, что и InternetOpen. Более того, мой эксперимент с VC подтверждает это.

Получается, что одни функции в dll Аксапта видит другие нет ? Почему ?

Или такие задачи в Аксапте решаются гораздо проще ? Может есть классы, которые на более высоком уровне позволяют работать с интернет ?

P.S.

Несмотря на то, что WinInet объявлен как final, я создал его наследника, добавил в него свой метод и переопределил один из его методов. Это что, глюк Аксапты ? (Axapta 2.5 SP2)
Теги
загрузка курсов валют, курс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фиксированный курс в журнале ГК. Вторичная валюта. concigliory DAX: Функционал 3 24.02.2014 15:15
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Кэширование курсов валют Tony Green DAX: Программирование 8 09.02.2007 10:02
Закачка курсов валют с Интернета. Hans DAX: Программирование 1 22.09.2006 12:08
Валюты и курсы валют Rafael DAX: Функционал 1 13.02.2002 19:19

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:08.