以下示例以 ipquery 接口为例,演示如何发起一次完整的 POST 请求,并把返回的 JSON 赋值给对应语言的变量,最终读取业务字段。
示例假设你已将 SDK 代码保存到项目中。复制代码后,只需修改配置区的变量值即可直接运行。
<?php
/**
* 聚合API平台 PHP 调用示例:ipquery 接口
* 请求方式:POST
* 接口地址:https://www.phpwc.cn/api/ipquery
*/
// 引入 SDK(从 /doc?page=sdk 复制保存为 wcapi_sdk.php)
require_once 'wcapi_sdk.php';
class MyApiService
{
// ==================== 配置区(从用户中心获取) ====================
private $host = 'https://www.phpwc.cn/api/'; // 平台域名(固定值)
private $pid = 1000; // 用户ID,登录用户中心可见
private $appkey = 'tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA'; // API密钥,用户中心 → API设置 页面生成
// ==================== 业务方法 ====================
/**
* 查询 IP 归属地
*/
public function ipquery()
{
$ip = '8.8.8.8';
// 调用 SDK 提供的 callApi() 函数
$result = callApi($this->host, $this->pid, $this->appkey, 'ipquery', ['ip' => $ip]);
// code === 0 表示成功,其他值为失败
if ($result['code'] !== 0) {
echo "调用失败:{$result['desc']}\n";
return;
}
// 从 data 字段读取业务数据
$data = $result['data'];
echo "IP: {$data['ip']}\n";
echo "国家: {$data['nation']}\n";
echo "省份: {$data['province']}\n";
echo "城市: {$data['city']}\n";
echo "运营商: {$data['isp']}\n";
}
}
// 使用
$api = new MyApiService();
$api->ipquery();
# 聚合API平台 Python 调用示例:ipquery 接口
# 请求方式:POST
# 接口地址:https://www.phpwc.cn/api/ipquery
# 从 SDK 文件导入 call_api 函数
# wcapi_sdk.py 中定义了签名和 POST 请求逻辑
from wcapi_sdk import call_api
# ==================== 配置区(从用户中心获取) ====================
HOST = "https://www.phpwc.cn/api/" # 平台域名(固定值)
PID = "1000" # 用户ID,登录用户中心可见
APPKEY = "tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA" # API密钥,用户中心 → API设置 页面生成
# ==================== 调用 ipquery ====================
# 查询 IP 归属地,call_api() 由 SDK 提供
biz_params = {"ip": "8.8.8.8"}
response = call_api(HOST, PID, APPKEY, "ipquery", biz_params)
# ==================== 处理响应 ====================
# code === 0 表示成功,非 0 表示失败,失败原因在 desc 字段中
if response.get("code") != 0:
print(f"调用失败:{response.get('desc')}")
exit()
# 从 data 字段读取业务数据
ip_info = response.get("data", {})
print(f"IP: {ip_info.get('ip')}")
print(f"国家: {ip_info.get('nation')}")
print(f"省份: {ip_info.get('province')}")
print(f"城市: {ip_info.get('city')}")
print(f"运营商: {ip_info.get('isp')}")
# ==================== 查看完整返回 ====================
import json
print(json.dumps(response, ensure_ascii=False, indent=2))
package main
import (
"encoding/json" // 用于格式化输出完整返回 JSON
"fmt" // 用于输出结果
)
// 聚合API平台 Go 调用示例:ipquery 接口
// 请求方式:POST
// 接口地址:https://www.phpwc.cn/api/ipquery
// 假设 SDK 文件 wcapi_sdk.go 已和本文件在同一 package 下
func main() {
// ==================== 配置区(从用户中心获取) ====================
host := "https://www.phpwc.cn/api/" // 平台域名(固定值)
pid := "1000" // 用户ID,登录用户中心可见
appkey := "tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA" // API密钥,用户中心 → API设置 页面生成
// ==================== 调用 ipquery ====================
// 查询 IP 归属地,CallAPI() 由 SDK 提供
bizParams := map[string]string{"ip": "8.8.8.8"}
response, err := CallAPI(host, pid, appkey, "ipquery", bizParams)
if err != nil {
fmt.Println("请求失败:", err)
return
}
// ==================== 处理响应 ====================
// code === 0 表示成功,非 0 表示失败
code := response["code"].(float64)
if code != 0 {
fmt.Println("调用失败:", response["desc"])
return
}
// 从 data 字段读取业务数据
ipInfo := response["data"].(map[string]interface{})
fmt.Println("IP: ", ipInfo["ip"])
fmt.Println("国家: ", ipInfo["nation"])
fmt.Println("省份: ", ipInfo["province"])
fmt.Println("城市: ", ipInfo["city"])
fmt.Println("运营商: ", ipInfo["isp"])
// ==================== 查看完整返回 ====================
jsonBytes, _ := json.MarshalIndent(response, "", " ")
fmt.Println(string(jsonBytes))
}
// 聚合API平台 Java 调用示例:ipquery 接口
// 请求方式:POST
// 接口地址:https://www.phpwc.cn/api/ipquery
// 假设 SDK 类 WcapiSdk.java 已在项目中
import java.util.HashMap; // HashMap 用于存储业务参数
import java.util.Map; // Map 接口
// 这里使用 Jackson 解析 JSON,实际可用 Gson/FastJSON 等替代
import com.fasterxml.jackson.databind.ObjectMapper;
public class Example {
public static void main(String[] args) throws Exception {
// ==================== 配置区(从用户中心获取) ====================
String host = "https://www.phpwc.cn/api/"; // 平台域名(固定值)
String pid = "1000"; // 用户ID,登录用户中心可见
String appkey = "tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA"; // API密钥,用户中心 → API设置 页面生成
// ==================== 调用 ipquery ====================
// 查询 IP 归属地,WcapiSdk.callApi() 由 SDK 提供
Map bizParams = new HashMap<>();
bizParams.put("ip", "8.8.8.8");
// callApi 内部会自动拼接地址、计算 sign、使用 POST 发送参数
// 返回 result 是 JSON 字符串,对应 {code, desc, data, request_id}
String result = WcapiSdk.callApi(host, pid, appkey, "ipquery", bizParams);
// ==================== 处理响应 ====================
// 把 JSON 字符串解析为 Map(Jackson)
ObjectMapper mapper = new ObjectMapper();
Map response = mapper.readValue(result, Map.class);
// code === 0 表示成功,非 0 表示失败
int code = (Integer) response.get("code");
if (code != 0) {
System.out.println("调用失败:" + response.get("desc"));
return;
}
// 从 data 字段读取业务数据
Map ipInfo = (Map) response.get("data");
System.out.println("IP: " + ipInfo.get("ip"));
System.out.println("国家: " + ipInfo.get("nation"));
System.out.println("省份: " + ipInfo.get("province"));
System.out.println("城市: " + ipInfo.get("city"));
System.out.println("运营商: " + ipInfo.get("isp"));
// ==================== 查看完整返回 ====================
System.out.println(result);
}
}
using System; // Console 等基础类型
using System.Collections.Generic; // Dictionary 类型
using System.Threading.Tasks; // 异步任务
using System.Text.Json; // .NET 内置 JSON 解析
using WcapiSdk; // 引入 SDK 命名空间(WcapiClient 类)
// 聚合API平台 C# 调用示例:ipquery 接口
// 请求方式:POST
// 接口地址:https://www.phpwc.cn/api/ipquery
// 假设 SDK 文件 WcapiSdk.cs 已在项目中
class Program
{
static async Task Main(string[] args)
{
// ==================== 配置区(从用户中心获取) ====================
string host = "https://www.phpwc.cn/api/"; // 平台域名(固定值)
string pid = "1000"; // 用户ID,登录用户中心可见
string appkey = "tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA"; // API密钥,用户中心 → API设置 页面生成
// ==================== 调用 ipquery ====================
// 创建 SDK 客户端实例
var client = new WcapiClient();
// 查询 IP 归属地,CallApiAsync() 由 SDK 提供
var bizParams = new Dictionary
{
{ "ip", "8.8.8.8" }
};
// CallApiAsync 内部会自动拼接地址、计算 sign、使用 POST 发送参数
// 返回 result 是 JSON 字符串,对应 {code, desc, data, request_id}
string result = await client.CallApiAsync(host, pid, appkey, "ipquery", bizParams);
// ==================== 处理响应 ====================
// 把 JSON 字符串解析为字典
var response = JsonSerializer.Deserialize>(result);
// code === 0 表示成功,非 0 表示失败
if (Convert.ToInt32(response["code"]) != 0)
{
Console.WriteLine("调用失败:" + response["desc"]);
return;
}
// 从 data 字段读取业务数据
var ipInfo = (JsonElement)response["data"];
Console.WriteLine("IP: " + ipInfo.GetProperty("ip"));
Console.WriteLine("国家: " + ipInfo.GetProperty("nation"));
Console.WriteLine("省份: " + ipInfo.GetProperty("province"));
Console.WriteLine("城市: " + ipInfo.GetProperty("city"));
Console.WriteLine("运营商: " + ipInfo.GetProperty("isp"));
// ==================== 查看完整返回 ====================
Console.WriteLine(result);
}
}
/*
* 聚合API平台 Objective-C 调用示例:ipquery 接口
* 请求方式:POST
* 接口地址:https://www.phpwc.cn/api/ipquery
* 假设 SDK 文件 WcapiClient.h/m 已加入项目
*/
#import "WcapiClient.h" // 引入 SDK 头文件
int main(int argc, const char * argv[])
{
// ==================== 配置区(从用户中心获取) ====================
NSString *host = @"https://www.phpwc.cn/api/"; // 平台域名(固定值)
NSString *pid = @"1000"; // 用户ID,登录用户中心可见
NSString *appkey = @"tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA"; // API密钥,用户中心 → API设置 页面生成
// ==================== 调用 ipquery ====================
// 查询 IP 归属地,callApiWithHost 由 SDK 提供
NSDictionary *bizParams = @{
@"ip": @"8.8.8.8"
};
// callApiWithHost 内部会自动拼接地址、计算 sign、使用 POST 发送参数
// 返回 result 是 NSDictionary,对应 JSON 中的 {code, desc, data, request_id}
[WcapiClient callApiWithHost:host
pid:pid
appkey:appkey
jk_mark:@"ipquery"
biz_params:bizParams
completion:^(NSDictionary *result, NSError *error) {
// ==================== 处理响应 ====================
// 处理网络错误
if (error) {
NSLog(@"请求失败: %@", error);
return;
}
// code === 0 表示成功,非 0 表示失败
NSNumber *code = result[@"code"];
if ([code intValue] != 0) {
NSLog(@"调用失败: %@", result[@"desc"]);
return;
}
// 从 data 字段读取业务数据
NSDictionary *ipInfo = result[@"data"];
NSLog(@"IP: %@", ipInfo[@"ip"]);
NSLog(@"国家: %@", ipInfo[@"nation"]);
NSLog(@"省份: %@", ipInfo[@"province"]);
NSLog(@"城市: %@", ipInfo[@"city"]);
NSLog(@"运营商: %@", ipInfo[@"isp"]);
// ==================== 查看完整返回 ====================
NSLog(@"完整返回: %@", result);
}];
return 0;
}
#!/bin/bash
# 聚合API平台 cURL 调用示例:ipquery 接口
# 请求方式:POST
# 接口地址:https://www.phpwc.cn/api/ipquery
# 适用于 Linux / macOS / Windows Git Bash 等支持 bash 的环境
# ==================== 配置区(从用户中心获取) ====================
HOST="https://www.phpwc.cn/api/" # 平台域名(固定值)
PID="1000" # 用户ID,登录用户中心可见
APPKEY="tF9r7oQJ1dim46nM5xzBbuUaLNjf3uOA" # API密钥,用户中心 → API设置 页面生成
# ==================== 调用 ipquery ====================
# 生成签名:MD5("pid=" + pid + appkey)
SIGN_STR="pid=${PID}${APPKEY}"
SIGN=$(echo -n "$SIGN_STR" | md5sum | awk '{print $1}') # macOS 用 md5 替代 md5sum
# 拼接完整请求地址
URL="${HOST%/}/ipquery"
# 使用 cURL 发起 POST 请求
# -s 静默模式,-X POST 指定请求方式,-d 指定请求参数
# pid/sign 为公共参数,ip 为 ipquery 的业务参数
RESPONSE=$(curl -s -X POST "$URL" \
-d "pid=${PID}&sign=${SIGN}&ip=8.8.8.8")
# ==================== 处理响应 ====================
# 输出完整返回 JSON
echo "$RESPONSE"
# 使用 jq 解析并读取业务字段(需提前安装 jq:brew install jq / apt install jq)
# code 为 0 表示成功,非 0 表示失败
echo "$RESPONSE" | jq '.code'
echo "$RESPONSE" | jq -r '.data.ip'
echo "$RESPONSE" | jq -r '.data.nation'
echo "$RESPONSE" | jq -r '.data.province'
echo "$RESPONSE" | jq -r '.data.city'
echo "$RESPONSE" | jq -r '.data.isp'
{
// 状态码,0 表示成功
"code": 0,
// 状态描述
"desc": "success",
// 业务数据,ipquery 接口返回的 IP 归属地信息
"data": {
"ip": "8.8.8.8",
"nation": "美国",
"province": "加利福尼亚州",
"city": "山景城",
"isp": "Google LLC"
},
// 请求追踪ID
"request_id": "req_20240908123456"
}
© 网程科技(林州网程科技有限公司) | 豫ICP备2025120409号-2 | 豫B2-20230220 | 豫公网安备 41058102000262号