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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.10.2012, 10:40   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
http post из Аксапты 3,0 - как получить файл ?
Здраствуйте ,

Раньше вы помогли мне с етим делом . Тогда была задачя обрашаться на веб сервис и получить адрес .http.responseText() , всё работало .

Примерчик :
X++:
   req_params = strfmt( "user=%1&pass=%2&pack_no=%3", 'uuu', psw'', packs );
   req_len    = strfmt( "%1", strlen( req_params ) );
   http       = new XMLHttpRequest();
   http.open( "POST", url );
   http.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
   http.setRequestHeader( "Content-length", req_len );
   http.setRequestHeader( "Connection", "close" );
   http.send( req_params );
   response = http.responseText();
   infoLog.urlLookup( response );
Понадобилось теперь ещё других параметров из етого веб сервиса - почти все идентично , только возвращает оно файлик пдф .
По трейке - оно возвращает вот такое :
X++:
%PDF-1.7
3 0 obj
<</Type /Page /Parent 1 0 R /MediaBox [0 0 841.89 595.28] /Group << /Type 
/Group /S /Transparency /CS /DeviceRGB >> /Resources 2 0 R
/Contents 4 0 R>> endobj
4 0 obj
<</Filter /FlateDecode /Length 2123>> stream
x??s????}?
??v(!??t:?L?#\2}??,'>?kc?I??u????e??g?????O????qN'????LP???f?p*,??
T???????/?U]#??p???%?v???C?3?N?????u?zm>??|??pu?c??7^2#?d?]?t5??????JF0??8ft%???-d?bR#?-?)c?X?a?e??U???g2 
e???[?y=????7?kv?v|`k?A?pm
???q\2?????#1pB1opX;??kX?e
???>D!???
m|?E???l?????
?[???
??%??P?f???VU???%??Y|??7?*???????????z?_??b?950q*?^m,s?9???|?A?Wz?J?J@J?Y(?-k$?dN?dM(9!S??????^??????[?=(?
?[??E?M,\???????o?0????.??K?~S?n????/V??y|l??`??Y?j0i9}7?KO???9]\?
Ето как и содержание файла пдф . Как его сделать прочетаемым ?

С уважением , Римантас
Старый 25.10.2012, 11:12   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Как его сделать прочетаемым ?
Что-то мне подсказывает, что никак. PDF - бинарный файл, а responseText возвращает строку.

Вообще в аксапте с этим беда. Если бинарные данные положить в строку, то она обрежется на первом нулевом символе, что логично.

Даже если получится получить данные через класс Binary, то проблема их оттуда забрать - только побайтно (точнее пословно) в файл записывать, что долго.

Последний раз редактировалось Lucky13; 25.10.2012 в 11:27.
Старый 25.10.2012, 12:11   #3  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Что-то мне подсказывает, что никак. PDF - бинарный файл, а responseText возвращает строку.

Вообще в аксапте с этим беда. Если бинарные данные положить в строку, то она обрежется на первом нулевом символе, что логично.

Даже если получится получить данные через класс Binary, то проблема их оттуда забрать - только побайтно (точнее пословно) в файл записывать, что долго.
Если XmlHttpRequest класса негодиться для етого , может быть есть какая то другая класса , с которой можно что-то похоже сделать ? WebSession ? Работаю со старой 3,0 Аксаптой , возможности небогатые , но думаю как нибудь можно найти решение ...

А как там "класс Binary" , если попробывать вставить в файлик ? Вы можете сказать где искать примерчика ?
Старый 25.10.2012, 15:57   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Может анализ класса XmlHttpRequest и анализ http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx натлокнет на что нибудь.
Старый 25.10.2012, 16:34   #5  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от raz Посмотреть сообщение
Может анализ класса XmlHttpRequest и анализ http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx натлокнет на что нибудь.
Да, такое наклоняет ... . Первая проблема - как сделать в классе XmlHttpRequest в Аксапте метод responseType() ? Из MsDn :

object.responseType = ptr
ptr = object.responseType

То есть какой тип метода должен быть ? Текстовый метод ? Обнаружив какой тип данных следует следующие шаги ... А может кто нибудь подделиться исходником классой XmlHttpRequest . Теперь в 3,0 Аксапте , ета класса создаеться так : myself = new COM('Microsoft.XMLHTTP');
Но как видно , в 3,0 нету многих методов етого COM ...

Последний раз редактировалось Rimantas; 25.10.2012 в 16:38.
Старый 25.10.2012, 16:45   #6  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
В DAX3 еще есть \Classes\WinInet\internetReadFile
Старый 25.10.2012, 17:02   #7  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Если XmlHttpRequest класса негодиться для етого , может быть есть какая то другая класса , с которой можно что-то похоже сделать ? WebSession ? Работаю со старой 3,0 Аксаптой , возможности небогатые , но думаю как нибудь можно найти решение ...

А как там "класс Binary" , если попробывать вставить в файлик ? Вы можете сказать где искать примерчика ?
Если бы у класса Binary был метод сохранения его содержимого в файл, то можно было бы так сделать, но у него такого метода нет.

Про другие классы можно сказать тоже самое. У меня тоже 3.0 и я всячески пытался получать бинарные данные, но ничего не получилось. Может быть в старших версиях, где есть .Net так можно, а в тройке даже если получится получить указатель на бинарные данные, то не получится их оттуда прочитать. То есть не понятно как преобразовать апишный ExtTypes Pointer к аксаптовскому типу.

По-моему, даже где-то была тема про возвращение бинарных данных API-функцией и там пришли к выводу, что получить их можно только прочитав в цикле из класса Binary в какой-нибудь контейнер или записав в файл, но это долгая операция.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как удалить меточный файл в 2012? macklakov DAX: Администрирование 8 04.11.2012 03:05
http post из Аксапты 3,0 Rimantas DAX: Программирование 16 28.08.2012 10:02
The Death of Reason: Post Project Reviews Blog bot DAX Blogs 0 27.08.2010 19:05
Как из Аксапты получить список всех доступных ActiveX объектов? chi DAX: Программирование 3 03.12.2004 15:16
Есть файл Excel по расчеты стоимости модулей Аксапты DDA DAX: Администрирование 9 06.03.2003 16:09

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

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

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