Dynamics Nav与Groupon交流

时间:2015-10-13 10:19:02

标签: microsoft-dynamics dynamics-nav groupon dynamics-nav-2013

我需要在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错误,所以我不知道为什么拒绝它 但如果有什么事情对你来说似乎有问题,请帮忙!

2 个答案:

答案 0 :(得分:1)

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

干杯

答案 1 :(得分:1)

  1. 您不需要Nav Web服务,因为在这种情况下,当Web服务构建服务器端时,您是(Nav)客户端。例如。您可以调用Web服务,但Web服务无法调用任何内容。最有可能的是,您将使用NAS定期执行任务。
  2. AFAIK Nav无法处理JSON,但在Nav2013中可以使用.Net库,因此只需选择您喜欢的JSON library并从Nav中call来处理来自API的响应。
  3. 要对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);
  4. 在此示例中,发出了Uri中存储的地址请求。如果您需要在URL参数之外发布一些数据,那么您可以将其放到ReqXML。如果API假设返回的内容将在RespXML内。

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