Динамика Nav, обмен с Groupon

Мне нужно создать интерфейс между Dynamics NAV 2013 и Groupon API V2. Мне кажется, что данные Groupons API поступают в формате json - как я могу получить эту информацию в Dynamics NAV (например, заказы)? Должен ли я использовать веб-сервисы?

Спасибо

РЕДАКТИРОВАТЬ: Я много работал над этим и получил получение данных от рабочей группы. Проблема заключается в отправке информации: у меня проблема с отправкой запроса на отправку с параметрами - это мой код:

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 ответа

Самый простой способ NAV - это получить заказ в формате XML из API и импортировать XML, используя XMLports или Codeunits(используйте DotNet)

ура

  1. Вам не нужны веб-сервисы Nav, потому что в этом случае вы (Nav) являетесь клиентской стороной, когда веб-сервисы должны создавать серверную часть. Например, вы можете позвонить в веб-сервис, но веб-сервис не может ничего вызвать. Скорее всего, вы будете периодически использовать 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, TRUE);
    Req.open (reqType, Uri, FALSE);
    Req.setRequestHeader ('contentType', 'text / xml; charset = UTF-16');
    
    CASE reqType OF
     'GET': Req.send ();
     'POST': Req.send (ReqXML);
    КОНЕЦ;
    RespText:= Req.statusText;
    IF Req.status <> 200 THEN EXIT(FALSE);
    
    ЕСЛИ ОТКРЫТЬ (RespXML) ТОГДА СОЗДАТЬ (RespXML, ИСТИНА);
    RespXML.load(Req.responseXML); 

В этом примере запрос к адресу хранится в Uri сделан. Если вам необходимо опубликовать некоторые данные помимо параметров URL, вы должны поместить их в ReqXML, Если предполагается, что API вернет что-то, оно будет внутри RespXML,

Этот код работает для более старых версий Nav. Вам придется немного переписать его, чтобы использовать библиотеки.Net (например, webclient) и, возможно, избавиться от XML (в моем случае API был основан на XML), но структура будет примерно такой же.

Другие вопросы по тегам