0

我需要在 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&param2=456';
Request.ContentLength := STRLEN(postString); 
StreamWriter := StreamWriter.StreamWriter(Request.GetRequestStream);
StreamWriter.Write(postString);
StreamWriter.Close;

我收到一个 500 错误,所以我不知道为什么它被拒绝但是如果有什么对你来说似乎是错误的,请帮助!

4

2 回答 2

1
  1. 您不需要 Nav Web 服务,因为在这种情况下,您是(Nav)客户端,而 Web 服务将构建服务器端。例如,您可以调用 Web 服务,但 Web 服务不能调用任何东西。您很可能会使用NAS定期执行任务。
  2. AFAIK Nav 无法处理 JSON,但在 Nav2013 中可以使用 .Net 库,因此只需选择您喜欢的JSON 库并从 Nav调用它以处理来自 API 的响应。
  3. 要对 API 进行调用(请求),您可以使用您选择的.net或 com 库,就像使用 JSON 一样。

    ReqXML:自动化'Microsoft XML,v6.0'.DOMDocument60
    RespXML:自动化'Microsoft XML,v6.0'.DOMDocument60
    要求:自动化'Microsoft XML,v6.0'.XMLHTTP60
    
    创建(请求,真);
    Req.open(reqType, Uri, FALSE);
    Req.setRequestHeader('contentType', 'text/xml; charset=UTF-16');
    
    案例请求类型
     'GET': Req.send();
     'POST': Req.send(ReqXML);
    结尾;
    RespText := Req.statusText;
    IF Req.status <> 200 THEN EXIT(FALSE);
    
    IF ISCLEAR(RespXML) 然后创建(RespXML, TRUE);
    RespXML.load(Req.responseXML);

在此示例中,请求存储在其中Uri的地址。如果您需要发布除 URL 参数之外的一些数据,则将其放入ReqXML. 如果 API 假设返回某些内容,它将在RespXML.

此代码适用于旧版本的 Nav。您将不得不稍微重写它以使用 .Net 库(如webclient)并且可能摆脱 XML(在我的情况下 API 是基于 XML 的),但结构几乎相同。

于 2015-10-13T12:58:39.700 回答
1

最友好的 NAV 方式是从 API 获取 XML 格式的订单并使用 XMLports 或 Codeunits 导入 XML(使用 DotNet)

干杯

于 2015-10-13T12:09:17.623 回答