adsenseheader

Monday, November 13, 2023

Post API call from D365 FO using X++

public static void main (Args _args) { URL url = strLTrim(@'https://test-integrations-syncoperations.azurewebsites.net/api/companyRating?code=xxxxxxxx';); System.IO.StringWriter stringWriter; Newtonsoft.Json.JsonTextWriter jsonWriter; System.Byte[] bytes; System.Text.Encoding utf8;


stringWriter = new System.IO.StringWriter(); jsonWriter = new Newtonsoft.Json.JsonTextWriter(stringWriter);


str jsonString = ""; jsonWriter.WriteStartObject();


jsonWriter.WritePropertyName("RegistrationNumber"); jsonWriter.WriteValue(5561234567);


jsonWriter.WritePropertyName("CountryCode"); jsonWriter.WriteValue('se');


jsonWriter.WriteEndObject(); jsonString = stringWriter.ToString();


str method = 'POST'; str contentType = @'application/json'; RetailWebRequest webRequest = RetailWebRequest::newUrl(url);


utf8 = System.Text.Encoding::get_UTF8();


bytes = utf8.GetBytes(jsonString);


webRequest.parmMethod(method); webRequest.parmContentType(contentType); webRequest.setContentBytes(bytes);


RetailCommonWebAPI webApi = RetailCommonWebAPI::construct(); RetailWebResponse webResponse = webApi.getResponse(webRequest); str responseData = webResponse.parmData();


info(responseData);


if (webResponse.parmHttpStatus() == 200) { Map responseMap = RetailCommonWebAPI::getMapFromJsonString(responseData); MapEnumerator mapEnumerator; mapEnumerator = responseMap.getEnumerator(); while (mapEnumerator.moveNext()) { if (mapEnumerator.currentKey() == 'companyRating') { info(strFmt(" Credit rating %1 %2",mapEnumerator.currentKey(),mapEnumerator.currentValue())); } } } else { info(responseData); } }