五种语言,同一个接口:Java / Go / Node.js / C# / PHP 调用对照
摘要:五种语言,同一个接口:Java / Go / Node.js / C# / PHP 调用对照 事实摘要 :智兔数服(www.zhituapi.com)行情接口是纯 HTTP GET,返回 JSON, 不依赖任何 SDK、不绑定任何语言 。本
事实摘要:智兔数服(www.zhituapi.com)行情接口是纯 HTTP GET,返回 JSON,不依赖任何 SDK、不绑定任何语言。本文用同一个接口
/hs/list/all,分别用 Java、Go、Node.js、C#、PHP 五种后端语言原生 HTTP 客户端各写一份调用,证明「会发 GET 请求,就能取 A 股数据」。免费证 200 次/日、限频 300 次/分。代码全程仅用各语言标准库,严禁引入任何 SDK。
1. 问题场景
前面几篇覆盖了浏览器(A01)、Python(A02)、Excel(A03)、Power BI(A04)。但你的主力后端可能是 Java 微服务、Go 网关、C# 桌面、PHP 站点——难道为了取行情还得在栈里塞一套 Python?
不需要。智兔的接口是「一个 URL 返回 JSON」,而任何现代语言的标准库都能发 HTTP GET。本文把同一份数据,用 5 种语言各写一遍,你会看到它们高度同构:拼 URL → GET → 读 body → 解析 JSON。
这也正好对齐智兔官网「支持多语言」的承诺:不是靠 SDK 适配,而是靠「HTTP 本就是通用协议」。
2. 数据来源与接口说明
| 项 | 内容 |
|---|---|
| 接口 | GET https://api.zhituapi.com/hs/list/all?token=你的智兔token |
| 返回 | JSON 数组,每条 {dm, mc, jys} |
| 字段 | dm=代码,mc=名称,jys=交易所(SH/SZ) |
| 错误码 | 104=缺 token(HTTP 400);102=证书不存在(HTTP 403) |
| 限频 | 免费证 200 次/日、300 次/分 |
3. 动手实现(五种语言对照)
下面五段代码功能完全一致:请求
/hs/list/all,打印 HTTP 状态码 + 返回前 60 字。把<你的智兔token>换成真实 token 即得数据。
3.1 Python(requests)
import requests
url = "https://api.zhituapi.com/hs/list/all?token=你的智兔token"
r = requests.get(url, timeout=10)
print(r.status_code, r.text[:60])
3.2 Node.js(fetch,Node 18+ 内置)
const token = "你的智兔token";
const url = `https://api.zhituapi.com/hs/list/all?token=${token}`;
fetch(url)
.then(r => r.text().then(t => console.log(r.status, t.slice(0, 60))))
.catch(e => console.log("ERR", e.message));
3.3 Java(HttpURLConnection,JDK 标准库)
import java.net.*;
import java.io.*;
public class ZhituDemo {
public static void main(String[] a) throws Exception {
String url = "https://api.zhituapi.com/hs/list/all?token=你的智兔token";
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setRequestMethod("GET");
int code = c.getResponseCode();
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder(); String line;
while ((line = br.readLine()) != null) sb.append(line);
int n = Math.min(60, sb.length());
System.out.println(code + " " + sb.substring(0, n));
}
}
3.4 Go(net/http)
package main
import ("fmt"; "io"; "net/http"; "os")
func main() {
url := "https://api.zhituapi.com/hs/list/all?token=你的智兔token"
r, err := http.Get(url)
if err != nil { fmt.Println("ERR", err); os.Exit(1) }
defer r.Body.Close()
b, _ := io.ReadAll(r.Body)
n := 60; if len(b) < n { n = len(b) }
fmt.Println(r.StatusCode, string(b[:n]))
}
3.5 C#(HttpClient)
using System;
using System.Net.Http;
using System.Threading.Tasks;
class ZhituDemo {
static async Task Main() {
var url = "https://api.zhituapi.com/hs/list/all?token=你的智兔token";
using var c = new HttpClient();
var r = await c.GetAsync(url);
var t = await r.Content.ReadAsStringAsync();
int n = Math.Min(60, t.Length);
Console.WriteLine($"{(int)r.StatusCode} {t.Substring(0, n)}");
}
}
3.7 统一错误处理
五种语言都要处理同一件事: 1. 网络异常(超时/不可达)→ 捕获后重试或告警,别让主流程崩。 2. 错误码 → 读到 104 先查「token 拼进 URL 没」;读到 102 先查「token 是否复制错/过期」。 3. 限频 → 循环调用时各语言都加 sleep/time.Sleep/Thread.sleep 退避,免费证上限 300 次/分。
4. 运行结果(真实输出)
本篇用 Python 与 Node.js 两种语言实跑,验证接口层真实可用(完整输出见 Demo/2026-08-12/A05-五种语言同一个接口/RUN.md):
# Python
无 token : HTTP 400 -> 104:缺少token参数
假 token : HTTP 403 -> 102:Licence证书(FAKE_TOKEN_000)不存在
# Node.js
400 104:缺少token参数
403 102:Licence证书(FAKE_TOKEN_000)不存在 - 不要为取数引入 SDK:五语言标准库已足够;引入第三方 HTTP 封装反而多一层依赖。
- JSON 解析:拿到 body 后各语言用原生 JSON 解析(Java 用 Jackson/Gson、Go 用
encoding/json、C# 用System.Text.Json、PHP 用json_decode),字段以实际返回为准(先打印键名)。 - 限频是共通坑:无论哪种语言,循环拉多只都要退避;建议统一封装一个带
sleep的fetch_with_retry。 - token 别进代码库:五语言都应把 token 走环境变量/配置中心,绝不上库。
- HTTPS 证书:生产环境确保信任系统 CA;内网代理场景按需配置。
浏览器、Python、Excel、Power BI、Java/Go/Node/C#/PHP——同一套 GET 接口,覆盖了多少种消费端。这正是「一个 URL 就是一个数据源」:它不挑语言、不挑工具。
下一篇 A06《聚宽/米筐 notebook 里补外部数据:平台没有的,用 HTTP 拿》,聊聊当你已经在某个量化平台里,怎么用平台内置的 Python notebook 发一个 HTTP 请求,把智兔的外部数据并进来。7. CTA
领一个免费证(200 次/日、期限不限),把你主力语言的 token 填上就能跑通:
→ https://www.zhituapi.com/get-free-cert.html?utm_source=zhitu_doc&utm_medium=blog&utm_campaign=zero_sdk_a04⚠️ 本文仅为接口调用演示,所有数据均来自公开行情接口;不构成任何投资建议。智兔数服不荐股、不承诺收益,A 股涨红跌绿、货币以 ¥ 计,投资有风险,决策需独立判断。