我需要在Dynamics NAV 2013和Groupon API V2之间建立一个接口 在我看来,Groupons API数据采用json格式 - 我如何在Dynamics NAV中获取此信息(例如订单)? 我应该使用网络服务吗?
由于
编辑: 我在这方面做了很多工作,并从groupon工作中获得了数据 问题是发送信息: 我有一个问题是发送带参数的帖子请求 - 这是我的代码:
WebServiceURL := 'https://...';
Request := Request.Create(WebServiceURL);
Request.Method := 'POST';
Request.KeepAlive := TRUE;
Request.Timeout := 30000;
Request.Accept('application/json');
Request.ContentType('multipart/form-data');
postString := 'param1=123¶m2=456';
Request.ContentLength := STRLEN(postString);
StreamWriter := StreamWriter.StreamWriter(Request.GetRequestStream);
StreamWriter.Write(postString);
StreamWriter.Close;
我收到500错误,所以我不知道为什么拒绝它 但如果有什么事情对你来说似乎有问题,请帮忙!
答案 0 :(得分:1)
最NAV frienly方式是从API获取XML格式的订单并使用XMLports或Codeunits导入XML(使用DotNet)
干杯
答案 1 :(得分:1)
要对API进行调用(请求),您可以使用与您选择的.net或com库相同的JSON。
ReqXML : Automation 'Microsoft XML, v6.0'.DOMDocument60 RespXML: Automation 'Microsoft XML, v6.0'.DOMDocument60 Req : Automation 'Microsoft XML, v6.0'.XMLHTTP60 CREATE(Req, TRUE); Req.open(reqType, Uri, FALSE); Req.setRequestHeader('contentType', 'text/xml; charset=UTF-16'); CASE reqType OF 'GET': Req.send(); 'POST': Req.send(ReqXML); END; RespText := Req.statusText; IF Req.status <> 200 THEN EXIT(FALSE); IF ISCLEAR(RespXML) THEN CREATE(RespXML, TRUE); RespXML.load(Req.responseXML);
在此示例中,发出了Uri
中存储的地址请求。如果您需要在URL参数之外发布一些数据,那么您可以将其放到ReqXML
。如果API假设返回的内容将在RespXML
内。
此代码适用于旧版本的Nav。您将不得不重写它以使用.Net库(如webclient)并且可能摆脱XML(在我的情况下API是基于XML的)但结构将基本相同。