1,虽然ms收购了ax,但是在ax低版本(ver<=4.0)中,还没有办法直接使用ms现在主推的.net技术。

通常的做法是现在AX中天津.net的引用,然后才能在代码中使用.net的一些对象以实现我们需要的功能。

2,添加引用

3. job中代码范本。

//test download image from web
//use this code can show web image on report print System.Net.HttpWebRequest httpRequest = null;
System.Net.HttpWebResponse httpResponse = null;
System.Net.CookieCollection cookies = null; CLRObject clro = null;
System.IO.Stream stream;
System.IO.StreamReader reader;
str msg;
BinData bidData=new BinData();
Image logoImage;
Bitmap Bitmap;
System.Drawing.Image webImage ;
System.BitConverter bit;
;
new InteropPermission(InteropKind::ClrInterop).assert();
clro = System.Net.WebRequest::Create("http://www5.sml.com/**Online/images/img1.JPG");
httpRequest = clro;
httpResponse = httpRequest.GetResponse();
stream = httpResponse.GetResponseStream();
reader = new System.IO.StreamReader(stream);
webImage = System.Drawing.Image::FromStream(stream);//webImage.FromStream( httpResponse.GetResponseStream();
webImage.Save("C:\\AXconfig\\001.jpg");
bidData.loadFile("C:\\AXconfig\\001.jpg");
Bitmap = bidData.getData();

4, 实现.NET的另外一种方法,示例代码,实现通过AX系统上载文件到非windows服务器。所有的C#对象都声明为ClrObject.

static boolean SML_UpLoadFileByStream(Str url,Str FullFileName,Container conHeader=connull(),Container conQueryString=connull())
{
ClrObject PostArray;
CLRObject BinaryReader;
CLRObject WCHeaders,WCQueryString;
ClrObject FileStream;
ClrObject FileMode;
ClrObject FileAccess;
ClrObject PostStream;
CLRObject WC;
System.Exception clrException;
boolean ret=false;
int i;
Container subcon;
System.Net.WebClient xx;
; if (winapi::fileExists(FullFileName))
{
try
{
FileStream = new CLRObject("System.IO.FileStream", FullFileName,
CLRInterop::parseClrEnum("System.IO.FileMode","Open"), CLRInterop::parseClrEnum("System.IO.FileAccess", "Read"));
BinaryReader = new CLRObject("System.IO.BinaryReader", FileStream);
PostArray= BinaryReader.ReadBytes(System.Convert::ToInt32(FileStream.get_Length()));
WC = new CLRObject("System.Net.WebClient");
if (conlen(conHeader))
{
WCHeaders=WC.get_Headers();
for(i=1;i<=conlen(conHeader);i++)
{
subcon=conpeek(conHeader,i);
WCHeaders.Add(conpeek(subcon,1),conpeek(subcon,2));
}
}
if (conlen(conQueryString))
{
WCQueryString=WC.get_QueryString();
for(i=1;i<=conlen(conQueryString);i++)
{
subcon=conpeek(conQueryString,i);
WCQueryString.Add(conpeek(subcon,1),conpeek(subcon,2));
}
}
PostStream=WC.OpenWrite(url, "POST");
PostStream.Write(PostArray, 0,PostArray.get_Length());
PostStream.close();
FileStream.close();
}
catch(Exception::CLRError)
{
if (CLRInterop::isNull(PostStream) == false)
{
PostStream.Close();
}
if (CLRInterop::isNull(FileStream) == false)
{
FileStream.Close();
}
}
ret=true;
}
return ret;
}

在AX4.0中使用C#脚本的实现的更多相关文章

  1. 浅析busybox-1.12.0中ash的脚本命令局限性

    浅析busybox-1.12.0中ash的脚本命令局限性 LUTHER= 表示将LUTHER清空,将其变为null echo ${LUTHER:-111}如果执行该句之前LUTHER变量不存在,那么显 ...

  2. 第四章 在MVC4.0中对脚本以及样式表的引用变化

    原文:http://www.cnblogs.com/xdotnet/archive/2012/07/21/aspnet40_webpage20.html 一.可以直接使用“~”,而无需使用Href对象 ...

  3. AppBox v6.0中实现子页面和父页面的复杂交互

    前言 1. AppBox是捐赠开源(获取源代码至少需要捐赠作者 1 元钱),基于的 FineUI(开源版)则是完整开源,网址:http://fineui.codeplex.com/ 2. 你可以通过捐 ...

  4. 在 Typescript 2.0 中使用 @types 类型定义

    在 Typescript 2.0 中使用 @type 类型定义 基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义.导致在编译的时候,经常会看到一连串的找不到类型的提示.解决的方式经 ...

  5. redis中使用java脚本实现分布式锁

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/115.html?1455860390 edis被大量用在分布式的环境中,自 ...

  6. 在selenium2.0中使用selenium1.0的API

    Selenium2.0中使用WeDriver API对页面进行操作,它最大的优点是不需要安装一个selenium server就可以运行,但是对页面进行操作不如selenium1.0的Selenium ...

  7. 第二十三篇:在SOUI中使用LUA脚本开发界面

    像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...

  8. C++中嵌入Lua脚本环境搭建

    第一步(环境准备工作): 工具: ●LuaForWindows_v5.1.4-46.exe傻瓜式安装. 作用:此工具可以在windows环境下编译运行Lua脚本程序.安装完成后会有两个图标:Lua和S ...

  9. C++中调用Python脚本

    C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...

随机推荐

  1. smartgit document merge

    'Normal' Merge In case of a normal merge, a merge commit with at least two parent commits (i.e., the ...

  2. BIP_开发案例09_结合JavaCP通过BIP API输出报表dataprocess / rtfprocess / foprocess(案例)

    20150814 Created By BaoXinjian

  3. PO_PO系列 - 请购单系统分析(案例)

    2014-07-01 Created By BaoXinjian

  4. OAF_EO系列7 - OAException异常处理及实现(案例)

    2014-06-12 Created By BaoXinjian

  5. 动态WebService方法

    [转] 调用Webservice的方法一般是通过右击项目-->添加服务引用-->输入Webservice地址-->前往-->确定,这样可以顺利调用服,但是需要注意的一点是:如果 ...

  6. T4批量生成多文件

    http://www.cnblogs.com/zengxiangzhan/p/3250105.html Manager.ttinclude <#@ assembly name="Sys ...

  7. 牢骚 - 你代码写得丑,又不肯用好一点的IDE,这让我很为难啊。

    又有人问我代码错误,发过来就是一篇巨丑无比的代码,先不说左大括号转行还和代码写在同一行的谭浩强风格,你这狗啃的一样的缩进是闹哪样!粘进VS2015里面,自动格式化,瞬间赏心悦目,编译错误出了5行,我直 ...

  8. HttpClient和HttpURLConnection整合汇总对比

    性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...

  9. 在linux下通过sh运行java程序

    1.导出jar包放在目录下,如/home 2.通过vi创建sh文件如:test.sh,内容如:java -jar test1.jar com.wzh.test.test & 3.运行命令:sh ...

  10. iOS 批量打包--Shell脚本

    由于公司有批量打包的需要,只是渠道号不一样,网上搜索一番,大致有两个方式:a) 从源程序一次性打出所有渠道的ipa包,大概的思路就是利用脚本循环执行打包过程,而每次打包前都通过脚本修改项目中存放渠道号 ...