【问题标题】:Spark Core's API returns HTTPS 400 errorSpark Core 的 API 返回 HTTPS 400 错误
【发布时间】:2015-04-16 18:53:12
【问题描述】:

我正在尝试向 Spark 的 Cloud API 发出 HTTPS 请求。我在 httplib 库中使用以下代码

import httplib
spark = httplib.HTTPSConnection("api.spark.io")
spark.request("GET", "/v1/devices")
response = spark.getresponse()
print response.status, response.reason

根据 Spark API documentation,这应该可以工作。但相反,我收到 400 Bad Request。我究竟做错了什么?

【问题讨论】:

    标签: python http https


    【解决方案1】:

    Spark Cloud 使用传统的 HTTP 响应代码从核心提供有关请求有效性及其成功或失败的反馈。

    您收到 400 错误的原因是因为您没有按照以下文档中的示例发布 access tokenid

    POST /v1/devices
    
    # EXAMPLE REQUEST
    curl https://api.spark.io/v1/devices \
         -d access_token=1234 \
         -d id=0123456789abcdef01234567
    

    使用此修复程序可以轻松解决此问题:

    import httplib
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    params = {"access_token": "1234", "id": "0123456789abcdef01234567"}
    spark = httplib.HTTPSConnection("api.spark.io")
    spark.request("GET", "/v1/devices", params, headers)
    response = spark.getresponse()
    print response.status, response.reason
    

    参数应该是您的access tokenid

    【讨论】:

      【解决方案2】:

      忘记阅读回复内容?

      >>> import httplib
      >>> spark = httplib.HTTPSConnection("api.spark.io")
      >>> spark.request("GET", "/v1/devices")
      >>> response = spark.getresponse()
      >>> print response.status, response.reason
      400 Bad Request
      >>> response.read()
      '{\n  "error": "invalid_request",\n  "error_description": "The access token was not found"\n}'
      >>> 
      

      FWIW 你可以自己发现只是访问浏览器中的 url...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 2021-12-18
        • 1970-01-01
        相关资源
        最近更新 更多