Показать сообщение отдельно
Старый 09.10.2021, 18:04   #1  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Как извлечь HttpResponseMessage из результата HttpClient.PostAsync (System.Threading.Tasks.Task )
Всем доброго времени суток.

Пытаюсь перенести в Ах .Net пример вот отсюда https://www.remove.bg/api#sample-code
Имею следующий код

X++:
System.Net.Http.MultipartFormDataContent    multipartFormDataContent;
System.Net.Http.Headers.HttpContentHeaders  httpContentHeaders;
System.Net.Http.HttpClient                  httpClient;
System.Net.Http.HttpResponseMessage         httpResponseMessage;
System.Net.Http.HttpContent                 httpContent;
System.Net.Http.ByteArrayContent            byteArrayContent;
System.Net.Http.StringContent               stringContent;
System.Threading.Tasks.Task                 task;
System.Byte[]                               fileByte;
System.IO.FileStream                        fileStream;
;

....

httpClient = new System.Net.Http.HttpClient ();
multipartFormDataContent = new System.Net.Http.MultipartFormDataContent();
    
httpContentHeaders = multipartFormDataContent.get_Headers();
httpContentHeaders.Add('X-Api-Key', SysAdminParameters::removeBgApiKey());
    
fileByte = System.IO.File::ReadAllBytes(fileName);
byteArrayContent = new System.Net.Http.ByteArrayContent(fileByte);    
multipartFormDataContent.Add(byteArrayContent, 'image_file', fileName);
    
stringContent = new System.Net.Http.StringContent('auto');
multipartFormDataContent.Add(stringContent, 'size');
    
try
{
    task = httpClient.PostAsync("https://api.remove.bg/v1.0/removebg", multipartFormDataContent);     
    //  вот тут собственно у меня и затык
        
    //httpResponseMessage = httpClient.PostAsync("https://api.remove.bg/v1.0/removebg", multipartFormDataContent);
    
    if (isSuccessStatusCode)
    {            
        fileStream = new System.IO.FileStream(fileNameWoBg, System.IO.FileMode::Create, System.IO.FileAccess::Write, System.IO.FileShare::None);    
        httpContent = httpResponseMessage.get_Content();
        httpContent.CopyToAsync(fileStream);
        fileStream.Close();
    }
}
catch (Exception::CLRError)
{
    //info(AifUtil::getClrErrorMessage());
    handleClrException_MRC(false, true);
    throw error("@SYS93289");
}
Как из Task извлечь HttpResponseMessage?
Подсказка явно показывает что результат работы httpClient.PostAsync это System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]