RestSharp 响应内容始终为 Null 但仍会执行日志
RestSharp Response Content Always Null But Still Logs With Execute
发送基本 GET 时,response.Content 在 return 上始终为 NULL。奇怪的是它会在标准执行上记录内容,但不会在异步上记录内容。我已经无计可施了。任何帮助将不胜感激。
我尝试使用标准的 client.Execute 和 client.ExecuteAsync,两者的结果似乎相同,除了日志记录部分。
常规方法(标识信息 X'd out):
RestClient myClient = new RestClient(uri);
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("Host", "XXXXX");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("Authorization", "XXX");
Serilog.Log.Information($"Request is {request}");
IRestResponse response = myClient.Execute(request);
var htmlString = response.Content;
Serilog.Log.Information($"Request is {response.Content}");
return htmlString;
executeAsync 方法:
RestClient myClient = new RestClient(uri);
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("Host", "XXXXX");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("Authorization", "XXXXXXXXXX");
Serilog.Log.Information($"Request is {request}");
var htmlString = "";
myClient.ExecuteAsync(request, response =>
{
htmlString = response.Content;
Serilog.Log.Information($"Response is {response.Content}");
});
return htmlString;
显然我希望它既记录又 return 实际内容。好的,大师们,我做错了什么?
你一定是在开玩笑吧。它一直在工作(至少是常规执行),但字符串开头有太多空格,VS 2017 没有将其显示为本地。我必须深入研究才能看到它。
发送基本 GET 时,response.Content 在 return 上始终为 NULL。奇怪的是它会在标准执行上记录内容,但不会在异步上记录内容。我已经无计可施了。任何帮助将不胜感激。
我尝试使用标准的 client.Execute 和 client.ExecuteAsync,两者的结果似乎相同,除了日志记录部分。
常规方法(标识信息 X'd out):
RestClient myClient = new RestClient(uri);
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("Host", "XXXXX");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("Authorization", "XXX");
Serilog.Log.Information($"Request is {request}");
IRestResponse response = myClient.Execute(request);
var htmlString = response.Content;
Serilog.Log.Information($"Request is {response.Content}");
return htmlString;
executeAsync 方法:
RestClient myClient = new RestClient(uri);
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("Host", "XXXXX");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("Authorization", "XXXXXXXXXX");
Serilog.Log.Information($"Request is {request}");
var htmlString = "";
myClient.ExecuteAsync(request, response =>
{
htmlString = response.Content;
Serilog.Log.Information($"Response is {response.Content}");
});
return htmlString;
显然我希望它既记录又 return 实际内容。好的,大师们,我做错了什么?
你一定是在开玩笑吧。它一直在工作(至少是常规执行),但字符串开头有太多空格,VS 2017 没有将其显示为本地。我必须深入研究才能看到它。