繁体   English   中英

如何从 HttpResponseMessage 读取应用程序/pdf 内容类型并将其转换为 stream

[英]How to read application/pdf content type from HttpResponseMessage and convert it into stream

我有一个 Web API 连接到另一个端点。 来自第二个 Web API 的 GET 方法返回应用程序/pdf 内容类型。 在这里,我成功获取了数据。 如何将 response.Content 转换为文件/内存 stream 并返回值?

 public async Task<T> functionname<T>(ApplicationApiRoutes.APIRoutes route, string token = "", int TimeoutMinutes = 5, CancellationToken cancellationToken = default, params string[] routeparams)
    {
        T Response = default;
        try
        {
            ApplicationApiRoutes._RouteHashTable.TryGetValue(route, out string FormattedRoute);

            FormattedRoute = String.Format(FormattedRoute, routeparams);

            using (var request = new HttpRequestMessage(HttpMethod.Get, $"{FormattedRoute}"))
            {
                if (!String.IsNullOrWhiteSpace(token))
                {
                    request.Headers.Add("Cookie", $"access_token="+ token);
                }
                
               

                using (var response = await _httpclient
                    .SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken))
                {

                    
                   
                    response.EnsureSuccessStatusCode();

                    var result = await response.Content.ReadAsStringAsync();

                    Response = JsonConvert.DeserializeObject<T>(result, _jsonsettings);
                }
            }
        }
        catch (Exception ex)
        {
           
        }

        return Response;
    }

假设您想在检索文件后下载文件,请在您的 controller 操作方法中尝试以下操作:

var fileStream = new MemoryStream();

using (var file = await _httpClient.GetStreamAsync(request).ConfigureAwait(false))
{
      await file.CopyToAsync(fileStream);
}

fileStream.Position = 0;  
return File(fileStream , "application/pdf", "filename.pdf");  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM