You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Okta认证的定价API Python封装缺少什么才能获取URL的JSON响应

代码修复及打印方案

现有代码核心问题

  • 实例方法调用错误:get_available_sources等方法调用_send_request时未加self.前缀,会触发未定义变量报错
  • 响应未解析为JSON:_send_request当前直接返回原生HTTPResponse对象,没有调用已封装的loadJson方法解析为JSON格式
  • URL路径格式错误:get_latest_prices、historical_prices方法用空格拼接参数,不符合HTTP URL规范,需要改为标准查询参数格式
  • Okta认证请求未释放连接:初始化阶段调用sso.lukka.tech的请求没有关闭连接,存在资源泄漏风险

具体修改步骤

1. 调试Okta认证响应

如果需要打印Okta身份认证接口的返回结果,在__init__方法中获取到response后添加打印语句即可:

# 原有代码
conn.request("POST", path, params, headers)
response = conn.getresponse()
# 新增打印语句,直接输出Okta返回的完整JSON内容
print("Okta认证响应:", loadJson(response))

if response.status != 200:
    raise ApiErrorException(response.status, "Failed to get access token")

2. 修复_send_request方法,自动解析JSON

def _send_request(self,path):
    with http.client.HTTPSConnection(self.host) as conn:
        headers = self.default_headers()
        conn.request("GET", path, None, headers)
        response = conn.getresponse()
        # 直接返回解析后的JSON结果,不需要再单独处理响应
        return loadJson(response)

3. 修正实例方法调用

所有调用_send_request的方法都需要添加self.前缀,例如:

def get_available_sources(self):
    path = "/v1/pricing/sources"
    return self._send_request(path)

def get_source_details(self, sourceId):
    path = f"/v1/pricing/sources/{sourceId}"
    return self._send_request(path)

4. 修复URL路径拼接

以get_latest_prices为例,改为标准查询参数拼接方式:

def get_latest_prices(self,asOf, sourceId, pairCodes):
    query_params = urllib.parse.urlencode({
        "asOf": asOf,
        "pairCodes": pairCodes
    })
    path = f"/v1/pricing/sources/{sourceId}?{query_params}"
    return self._send_request(path)

5. 调用接口打印返回结果

在main块中调用接口即可直接打印JSON格式的返回内容:

if __name__ == '__main__':
    from pricing_api_creds import lukka_pricing
    c = DataPricingClient(**lukka_pricing)
    # 示例:打印可用数据源接口的返回结果
    sources = c.get_available_sources()
    print("可用数据源:", sources)

内容的提问来源于stack exchange,提问作者Zer0chance_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:48:00