🎨 优化响应流读取,兼容MemoryStream

This commit is contained in:
LemonNoCry 2023-11-11 15:57:56 +08:00
parent afb9a0d9f5
commit c85f51a901
No known key found for this signature in database

View File

@ -7,29 +7,29 @@ namespace Blog.Core.Common.Extensions;
public static class HttpResponseExceptions public static class HttpResponseExceptions
{ {
public static string GetResponseBody(this HttpResponse response) public static string GetResponseBody(this HttpResponse response)
{ {
if (response is null) if (response is null)
{ {
return default; return string.Empty;
} }
if (response.Body is FluentHttpResponseStream responseBody) //原始HttpResponseStream 无法读取
{ //实际上只是个包装类,内部使用了HttpResponsePipeWriter write
response.Body.Position = 0; switch (response.Body)
//不关闭底层流 {
using StreamReader stream = new StreamReader(responseBody, leaveOpen: true); case FluentHttpResponseStream:
string body = stream.ReadToEnd(); case MemoryStream:
response.Body.Position = 0; {
return body; response.Body.Position = 0;
} using var stream = new StreamReader(response.Body, leaveOpen: true);
else var body = stream.ReadToEnd();
{ response.Body.Position = 0;
//原始HttpResponseStream 无法读取 return body;
//实际上只是个包装类,内部使用了HttpResponsePipeWriter write }
throw new ApplicationException("The response body is not a FluentHttpResponseStream"); default:
} // throw new ApplicationException("The response body is not a FluentHttpResponseStream");
return string.Empty;
return default; }
} }
} }