首页 > 解决方案 > RestSharp 响应内容始终为空,但仍记录 Execute

问题描述

发送基本 GET 时,response.Content 在返回时始终为 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;

显然,我希望它既记录又返回实际内容。好的,大师们,我做错了什么?

标签: c#restsharp

解决方案


你在跟我开玩笑。它一直在工作(至少是常规执行),但是字符串开头的空格太多以至于 VS 2017 没有将其显示为本地。我必须深入研究才能看到它。


推荐阅读