RestSharp响应被禁止

时间:2018-05-27 18:15:16

标签: api request restsharp

我尝试向https://c-cex.com/t/prices.json

提出简单请求

如果我在浏览器中使用此URL,则会显示正确的响应,但如果我使用RestRequest发出相同的请求,则会始终收到403错误禁止。我尝试HttpClient,WebRequest我得到了同样的错误

我把标头放在用户代理,没有缓存和许多其他值但没有工作

关于这个问题的任何想法?

Dim url As String = "https://c-cex.com/t/prices.json"
Dim client As New RestSharp.RestClient(url)
Dim request = New RestRequest(url, Method.GET)
Dim response = client.Execute(request)

使用apisign请求更新了代码

Dim nonce As String = CInt((DateTime.UtcNow - New DateTime(1970, 1, 1)).TotalSeconds).ToString

        Dim url As String = "https://c-cex.com/t/api.html?a=getbalance&currency=BTC&apikey=" & API_KEY & "&nonce=" & nonce


        Dim keybytes() = UnicodeEncoding.ASCII.GetBytes(API_SECRET)
        Dim hs As System.Security.Cryptography.HMACSHA512 = New System.Security.Cryptography.HMACSHA512(keybytes)
        Dim urlbytes() = UnicodeEncoding.ASCII.GetBytes(url)

        Dim sh() = hs.ComputeHash(urlbytes)    

        Dim client As New RestSharp.RestClient(url)            

        Dim request = New RestRequest(url, Method.GET)
        request.AddHeader("Cache-Control", "no-cache")
        request.AddHeader("apisign", HttpUtility.UrlEncode(ToHexString(sh)))    
        Dim response = client.Execute(request)

1 个答案:

答案 0 :(得分:1)

我在没有提供标题信息的情况下得到了响应。看起来给定的代码片段在VB和C#中正常工作。作为最佳实践,需要在RestClient中指定基本URL和RestRequest中的相对URL。 / p>

请在不添加请求标题信息的情况下重新检查

<强> VB:

  Imports RestSharp

Module Module1
    Sub Main()

        Dim host As String = "https://c-cex.com"
        Dim endpoit As String = "t/prices.json"
        Dim client As New RestSharp.RestClient(host)
        Dim request = New RestRequest(endpoit, Method.GET)
        Dim response = client.Execute(request)

        Console.WriteLine("Response Body " + response.Content)
        Console.WriteLine("Response Code " + response.StatusDescription)

    End Sub
End Module

<强> C#:

    String host = "https://c-cex.com";
    String endpoint = "t/prices.json";

    RestClient _restClient = new RestClient(host);

    var request = new RestRequest(endpoint, Method.GET);
    var response = _restClient.Execute(request);

    Console.WriteLine("Response Body :"+response.Content);
    Console.WriteLine("Response Status Code :" + response.StatusDescription);

enter image description here enter image description here

相关问题