PHP调用示例代码

本文介绍了一个题库API类的设计实现,包括了如何通过PHP语言进行API调用的基础流程,如设置时间戳、生成签名、获取不同阶段科目的列表、教材版本及教材列表等关键功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
date_default_timezone_set("PRC");

/**
 * 题库API类
 */

class ApiCall
{
	private static $APP_KEY = '2017************';
	private static $APP_SECRET = 'devsecret';
	private static $HOST = 'http://open.zhijiao123.com/v1';

	private static function obj2strAndAppendSecret($parameter) {
		$ret = "";
		foreach ($parameter as $key => $val) {
			$ret .= $key . "=" . $val . "&";
		}
		$ret .= "devSecret=" . self::$APP_SECRET;
		return $ret;
	}

	private static function buildHttpQuery($url, $parameter = array()) {
		ksort($parameter);
		$sign = sha1(self::obj2strAndAppendSecret($parameter));

		$ret = "";
		foreach ($parameter as $key => $val) {
			$ret .= $key . "=" . $val . "&";
		}
		$ret .= "signature=" . $sign;
		$url = $url . "?" . utf8_encode($ret);
		return $url;
	}
	
	// 生成毫秒时间戳
	private static function getMillisecond() { 
		list($s1, $s2) = explode(' ', microtime()); 
		return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
	}
	
	// 发出请求,返回结果
	private static function get($api, $data = array()) {
		$data["developerId"] = self::$APP_KEY;
		$data["timestamp"] = self::getMillisecond();
		
		$url = self::buildHttpQuery(self::$HOST . $api, $data);
		$url = str_replace(" ", "%20", $url);
		$response = file_get_contents($url);

		return json_decode($response, true);
	}

	/** 获取科目列表
	 * @param $stage 学段,小学1,初中2,高中3
	 */
	public static function getSubjectList($stage=2) {
		$result = self::get("subject/list", array(
				"stage" => $stage,
			));

		return $result;
	}

	/** 获取教材版本
	 * @param $sid 科目id
	 */
	public static function getVersionList($sid=2) {
		$result = self::get("version/list", array(
				"sid" => $sid,
			));

		return $result;
	}

	/** 获取教材版本
	 * @param $vid 版本id
	 */
	public static function getTextbookList($vid=2) {
		$result = self::get("textbook/list", array(
				"vid" => $vid,
			));

		return $result;
	}

}
$apiCall = new ApiCall();
$apiCall::getSubjectList();

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值