25.10.2012, 10:40 | #1 |
Участник
|
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 |
Участник
|
Что-то мне подсказывает, что никак. PDF - бинарный файл, а responseText возвращает строку.
Вообще в аксапте с этим беда. Если бинарные данные положить в строку, то она обрежется на первом нулевом символе, что логично. Даже если получится получить данные через класс Binary, то проблема их оттуда забрать - только побайтно (точнее пословно) в файл записывать, что долго. Последний раз редактировалось Lucky13; 25.10.2012 в 11:27. |
|
25.10.2012, 12:11 | #3 |
Участник
|
Цитата:
Сообщение от Lucky13
Что-то мне подсказывает, что никак. PDF - бинарный файл, а responseText возвращает строку.
Вообще в аксапте с этим беда. Если бинарные данные положить в строку, то она обрежется на первом нулевом символе, что логично. Даже если получится получить данные через класс Binary, то проблема их оттуда забрать - только побайтно (точнее пословно) в файл записывать, что долго. А как там "класс Binary" , если попробывать вставить в файлик ? Вы можете сказать где искать примерчика ? |
|
25.10.2012, 15:57 | #4 |
NavAx
|
Может анализ класса XmlHttpRequest и анализ http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx натлокнет на что нибудь.
|
|
25.10.2012, 16:34 | #5 |
Участник
|
Цитата:
Сообщение от raz
Может анализ класса XmlHttpRequest и анализ http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx натлокнет на что нибудь.
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 |
NavAx
|
В DAX3 еще есть \Classes\WinInet\internetReadFile
|
|
25.10.2012, 17:02 | #7 |
Участник
|
Цитата:
Сообщение от Rimantas
Если XmlHttpRequest класса негодиться для етого , может быть есть какая то другая класса , с которой можно что-то похоже сделать ? WebSession ? Работаю со старой 3,0 Аксаптой , возможности небогатые , но думаю как нибудь можно найти решение ...
А как там "класс Binary" , если попробывать вставить в файлик ? Вы можете сказать где искать примерчика ? Про другие классы можно сказать тоже самое. У меня тоже 3.0 и я всячески пытался получать бинарные данные, но ничего не получилось. Может быть в старших версиях, где есть .Net так можно, а в тройке даже если получится получить указатель на бинарные данные, то не получится их оттуда прочитать. То есть не понятно как преобразовать апишный ExtTypes Pointer к аксаптовскому типу. По-моему, даже где-то была тема про возвращение бинарных данных API-функцией и там пришли к выводу, что получить их можно только прочитав в цикле из класса Binary в какой-нибудь контейнер или записав в файл, но это долгая операция. |
|
25.10.2012, 17:06 | #8 |
NavAx
|
|
|
|
За это сообщение автора поблагодарили: Krasher (1), Player1 (1). |