RestSharp没有返回任何数据?

时间:2017-05-10 20:24:03

标签: c# rest restsharp

我们正在尝试测试.Net 4.0控制台应用程序强制它使用TLS1.2并且我没有让它返回任何数据。

如果我使用Postman并在https://domainname.com/TestEndpoint/api/v1上进行GET,那么我会得到一些简单的文本。

如果我在.Net 4控制台应用程序中使用以下代码并查看response.Content,则数据为空。我在使用RestSharp做错了吗?

try
{
    //https://domainname.com/TestEndpoint/api/v1

    var endPoint = "https://domainname.com/";
    var client = new RestClient(endPoint);

    var request = new RestRequest("TestEndpoint/api/v1", Method.GET);
    IRestResponse response = client.Execute(request);
    var content = response.Content; // raw content as string

    Console.WriteLine(response.Content);

}
catch (Exception ex)
{
    logger.Error("Error: {0} | {1} | {2}", ex.Message, ex.StackTrace, ex.InnerException);
}

1 个答案:

答案 0 :(得分:2)

根据我的理解,您的计算机上安装了.NET 4.5,但您的控制台应用程序的目标是.NET 4.0。

您需要使用的一行代码是:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

如果没有该行,您对TLS 1.2端点的请求将失败(因为我知道您已经知道)。

我怀疑你的请求是静默失败的,并且没有触发catch块。如果您在Fiddler或其他流量监控软件中检查您的请求,您可能会看到来自服务器的响应,该响应说明了" SSL / TLS不兼容"的效果。 RestSharp可能在内部抑制任何异常,或者根本不抛出任何异常(取决于API调用响应的状态代码)。

Tl;博士鉴于我们在聊天中的对话,我知道你知道如何让它工作。观看Fiddler的流量将告诉您为什么失败