Показать сообщение отдельно
Старый 15.10.2021, 14:05   #15  
vmoskalenko is offline
vmoskalenko
Участник
Аватар для vmoskalenko
 
145 / 334 (12) ++++++
Регистрация: 25.01.2007
Адрес: Toronto
Цитата:
Сообщение от smailik Посмотреть сообщение
Как из Task извлечь HttpResponseMessage?
Подсказка явно показывает что результат работы httpClient.PostAsync это System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]
Вот тут я привожу пример кода для вызова Logic App / PowerAutomate Flow из D365FO через HTTP запрос.
https://vmoskalenkoblog.wordpress.co...p-from-x-code/

X++:
using System.Net;
using System.Net.Http;
 
/// <summary>
///     How to call Microsoft Flow / Logic App from X++ code
/// </summary>
class CiePOSTmsFlow
{
    private HttpRequestMessage          request;
    private System.Net.Http.HttpClient  httpClient;
    private str                         requestContent;
 
    /// <summary>
    ///     main method
    /// </summary>
    /// <param name = "_args"></param>
    public static void main(Args _args)
    {
        CiePOSTmsFlow   postClass = new CiePOSTmsFlow();
 
        postClass.makePOST();
    }
 
    /// <summary>
    ///     Make a POST call to specified URL
    /// </summary>
    public void makePOST()
    {
        System.Net.Http.HttpResponseMessage response;
        const str URL = 'https://prod-38.westus.logic.azure.com:443/workflows/92375d07a20f49f0af0c6ef5ecdcd0dc/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xUL92bTtRiS4bGK0BEscSmpZoryU8UOxL52uNQR_bto'; //Microsoft Flow / Logic App endpoint
 
        try
        {
            requestContent = '{"name" : "JSON parameter1",  "description" : "Test JSON"   }'; //test JSON
            this.ConfigureHttpClient(URL);
 
            if(request != null)
            {
                response = httpClient.SendAsync(request).Result;
 
                if(!response.IsSuccessStatusCode)
                {
                    Info("MS Flow response is not successful. Please find details below.");
                    warning(strFmt(response.Content.ReadAsStringAsync().Result));
                }
                else
                {
                    Info("MS Flow has been called successful");
                    Info(strFmt(response.Content.ReadAsStringAsync().Result));
                }
            }
        }
        catch
        {
            warning("Error in calling MS Flow");
        }
 
    }
 
    /// <summary>
    /// Configure HTTP Client
    /// </summary>
    /// <param name = "_url">URL</param>
    private void ConfigureHttpClient(str _url = '')
    {
        System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::Tls12);
 
        httpClient = new System.Net.Http.HttpClient();
        if(!_url)
        {
            warning("No URL Provided");
        }
        else
        {
            httpClient.BaseAddress = new System.Uri(_url);
            System.Net.Http.Headers.HttpHeaders requestHeaders = httpClient.DefaultRequestHeaders;
 
            request = new HttpRequestMessage(HttpMethod::Post,  httpClient.BaseAddress);
 
            if(requestContent)
            {
                request.Content =  new StringContent(requestContent);
                requestHeaders = request.Content.Headers;
                requestHeaders.Remove("Content-Type");
                //https://www.json.org/index.html
                //A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string.
                //The application/json entry in the IANA registry has a note:
                //Note:  No "charset" parameter is defined for this registration.
                //Adding one really has no effect on compliant recipients.
                requestHeaders.Add("Content-Type", "application/json");
                //requestHeaders.Add("Ocp-Apim-Subscription-Key", sKey);
                requestContent = "";
            }
        }
 
    }
 
}
За это сообщение автора поблагодарили: Vadik (1), raz (5).