如果Content-Type为“ text / plain”,则GET RestSharp请求返回空值,而如果Content-Type为“ application / json”,则返回数据

时间:2018-06-20 13:35:38

标签: c# asp.net-mvc restsharp

我已经开始学习一些MVC,并且正在考虑使用Restful API创建仪表板。到目前为止,一切都进行得很顺利,但是,我遇到了我认为这是一个非常简单的修复程序,似乎无法弄清。

如果我向以应用程序/ json作为响应主体的API的一部分发出GET请求,则一切正常。但是,如果响应正文返回一个text / plain值,那么我收到的只是一个空值。

当我在Web浏览器或Postman中访问API URL时,它仅返回一个数字,因此这不应该是一个复杂的问题,由于缺乏知识,我只是缺少一些明显的东西。

如何使用文本/纯文本返回API的数据?

这是我在控制器中使用的代码:

   var client = new RestClient("http://URL:1234/api/");
            client.Authenticator = new HttpBasicAuthenticator("XXXXX", "XXXXX");
            var ErrorQueue = new RestRequest("errorqueue/count", Method.GET);
            ErrorQueue.AddHeader("Accept", "text/plain");
            ViewBag.errorQueueTotal = client.Execute<DashboardModel>(ErrorQueue).Data;

这是我模型中的代码:

public class DashboardModel
{

    public DataModel data { get; set; }

}

public class DataModel
{
    public string version { get; set; }
    public string name { get; set; }
    public string uptime { get; set; }
    public int errors { get; set; }
}

仅供参考,这是我的视图,称为ViewBag:

 <div class="container">
    <h3>Error Queue</h3>
    <div class="panel panel-default panel-default-Messages">
        <div class="panel-body">
            <label>Error Queue: </label>
            <span id="errorSpanID">@ViewBag.errorQueueTotal.data.errors</span>
        </div>
    </div>
</div>

我认为,问题出在请求API后如何尝试返回数据,但是弄清楚我要去哪里出错会很有帮助。

1 个答案:

答案 0 :(得分:0)

快速感谢Fran抽出宝贵时间发表评论和提供帮助。

下面的代码是我用来解决此问题的代码。我不能完全确定为什么RestSharp对我提出的所有其他GET请求都有效时为什么返回空值。尽管如此,这对我来说非常合适! :)

var clienttest = new WebClient();
            clienttest.Credentials = new NetworkCredential("XXXXX", "XXXXX");
            var response = clienttest.DownloadString("http://XXXXX:1234/api/Test/1234/state");
            ViewBag.details = response.ToString();