GDax API GET请求始终返回错误400

时间:2017-07-04 06:24:30

标签: c# api

我试图从GDAX获取订单簿(链接到调用的文档)但是当从c#可执行文件执行时我总是得到错误400 - 错误的请求。

当获取实际网址并将其粘贴到我的浏览器中时,它可以正常工作。

String URL = "https://api.gdax.com/products/BTC-USD/book?level=2";
WebRequest request = WebRequest.Create(URL);
WebResponse response = request.GetResponse();

2 个答案:

答案 0 :(得分:8)

您的API调用的实际问题是,API在发出请求时期望用户代理字符串:以下是处于工作状态的代码:

        try
        {

            String URL = "http://api.gdax.com/products/BTC-USD/book?level=2";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);                
            request.UserAgent = ".NET Framework Test Client";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            var encoding = ASCIIEncoding.ASCII;
            using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
            {
                string responseText = reader.ReadToEnd();
            }

        }
        catch(WebException ex)
        {
            HttpWebResponse xyz = ex.Response as HttpWebResponse;
            var encoding = ASCIIEncoding.ASCII;
            using (var reader = new System.IO.StreamReader(xyz.GetResponseStream(), encoding))
            {
                string responseText = reader.ReadToEnd();
            }
        }

基本上,ProtocolError表示您已收到响应,但是当您从异常中读取响应内容时,您可以观察到与协议相关的错误。我添加了catch来处理异常并读取ex.Response(这是HttpWebResponse),并且可以看到API在进行调用时要求使用用户代理。我得看错误为“{”消息“:”需要User-Agent标题。“}”

你可以忽略异常块中的代码,我只用它来查看实际的响应消息是什么,其中包含实际的错误细节

注意:我已将WebRequest装箱到HttpWebRequest以获得其他与http协议相关的属性,最重要的是“UserAgent”属性,这是WebRequest类无法使用的。

答案 1 :(得分:0)

您需要接受certificarte,Google才能访问https网络请求。

Like this