首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GDax API GET请求总是返回错误400。

GDax API GET请求总是返回错误400。
EN

Stack Overflow用户
提问于 2017-07-04 06:24:30
回答 2查看 2.1K关注 0票数 4

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

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

代码语言:javascript
复制
String URL = "https://api.gdax.com/products/BTC-USD/book?level=2";
WebRequest request = WebRequest.Create(URL);
WebResponse response = request.GetResponse();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-04 07:31:34

API调用的实际问题是,API在发出请求时需要一个用户代理字符串:下面是在工作条件下的代码:

代码语言:javascript
复制
        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要求在调用时提供用户代理。我必须将错误视为“{”消息:“需要用户代理头”}。

您可以忽略异常块中的代码,我只使用它来查看实际的响应消息,其中包含实际的错误详细信息。

注意:我已经将WebRequest封装到HttpWebRequest中,以获得更多与http协议相关的属性,最重要的是"UserAgent“属性,这是WebRequest类无法使用的。

票数 8
EN

Stack Overflow用户

发布于 2017-07-04 06:40:04

您需要接受证书,谷歌访问https网络请求。

Like this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44898351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档