您的位置:首页 > 其它

Dynamics Ax 2012中调用外部web服务

2016-12-12 13:15 148 查看

Dynamics Ax 2012中调用外部web服务

不同系统的功能集成,多用的web service或wcf或是轻量级的web api ,调用方式虽然有所不同,但原理基本上都是相似的

其他语言的调用方式,在这里不多做说明,我们主要讨论在Dynamics Ax 2012中进行外部服务的调用,没有在以前的版本中进行测试,需要的人可以自行去测试。

先说web api的调用

web api的调用其实就是网页的访问和解析,在ax 2012里提供网页请求和响应的类RetailCommonWebAPI ,通过它可以进行网页请求的提交和响应数据的获取,其本质也是用的.net framework里的HttpWebRequest和HttpWebResponse,熟悉C#的人使用起来应该是毫无压力,具体访问和解析的方法是根据实际情况来决定的,不做过多说明,来一个小例子简单演示一下。

RetailCommonWebAPI  web=RetailCommonWebAPI::construct();
RetailWebResponse           response;

;

response = web.makeRequest("http://www.baidu.com");

info(response.parmData());


web service和wcf的服务调用

在ax里用x++代码直接调用的方式,目前暂时是没办法实现的,只有用C#的代码进行中转来实现,可以简单的用C#来写一个dll文件,然后在ax里添加引用,然后用x++代码来进行调用就可以了。

只是在调用的过程中,发现总是会有一个错误,导致代码运行失败,最后查阅相关文档,才找到解决办法。

参考微软官方说明 :Walkthrough: Calling an External Web Service from X++ [AX 2012]

也就是说在C#类型进行构造的时候 ,用普通 的new是无法成功创建的,需要使用的方式 :

clientType = CLRInterop::getType("BingSearch.ServiceReferences.BingV2ServiceReference.BingPortTypeClient");

// Use the AifUtil class to create an instance of the service client object.
_client = AifUtil::CreateServiceClient(clientType);


这样得到的对象就可以正常使用了,暂时手上没有代码,就不上演示的例子了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息