以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务。

  1. 邮编查询:通过邮编查询地名;通过地名查询邮编
  2. 今日热门新闻查询:提供最新最及时的新闻信息,包含头条、新闻、财经、体育、娱乐、军事、教育、科技、NBA、股票、星座、女性、健康、育儿等频道,20分钟更新一次;由于数据量较大,如出现请求超时,请多请求一次。
  3. 区号查询:区号查询(通过地名查询区号、通过区号查询地名)
  4. 简繁体转换:简繁体转换
  5. 笑话大全:最新、最及时的笑话段子
  6. 周公解梦:周公解梦大全,周公解梦查询,免费周公解梦
  7. 二十四节气查询:二十四节气的时间、由来、习俗以及养生
  8. 标准体重计算器:身体质量指数 (Body Mass Index, 简称BMI), 通过身高和体重来计算您的身材是否标准
  9. 快递物流查询:自动识别快递公司,提供包括申通、顺丰、圆通、韵达、中通、汇通、EMS、天天、国通、德邦、宅急送等几百家快递物流公司单号查询接口
  10. 汇率查询:提供汇率转换、单个货币对应的热门货币汇率行情,包括人民币、美元、欧元、英镑等100多种货币的实时汇率查询。

**API Shop(apishop.net)提供多达50款的常用第三方API,可以从github上下载代码示例合集:https://github.com/apishop/All-APIs**

以上接口均包含PHP、Python、C#和Java等四种语言的代码示例,以 查询指定货币的汇率 API为例:

(1)基于PHP的 查询指定货币的汇率 API服务请求的代码示例

  1. <?php
  2. $method = "POST";
  3. $url = "https://api.apishop.net/common/exchange/getExchangeByCurrency";
  4. $headers = NULL;
  5. $params = array(
  6. "currency" => "", //货币(获取所有货币种类接口中获取)
  7. );
  8. $result = apishop_curl($method, $url, $headers, $params);
  9. If ($result) {
  10. $body = json_decode($result["body"], TRUE);
  11. $status_code = $body["statusCode"];
  12. If ($status_code == "000000") {
  13. //状态码为000000, 说明请求成功
  14. echo "请求成功:" . $result["body"];
  15. } else {
  16. //状态码非000000, 说明请求失败
  17. echo "请求失败:" . $result["body"];
  18. }
  19. } else {
  20. //返回内容异常,发送请求失败,以下可根据业务逻辑自行修改
  21. echo "发送请求失败";
  22. }
  23. /**
  24. * 转发请求到目的主机
  25. * @param $method string 请求方法
  26. * @param $URL string 请求地址
  27. * @param null $headers 请求头
  28. * @param null $param 请求参数
  29. * @return array|bool
  30. */
  31. function apishop_curl(&$method, &$URL, &$headers = NULL, &$param = NULL)
  32. {
  33. // 初始化请求
  34. $require = curl_init($URL);
  35. // 判断是否HTTPS
  36. $isHttps = substr($URL, 0, 8) == "https://" ? TRUE : FALSE;
  37. // 设置请求方式
  38. switch ($method) {
  39. case "GET":
  40. curl_setopt($require, CURLOPT_CUSTOMREQUEST, "GET");
  41. break;
  42. case "POST":
  43. curl_setopt($require, CURLOPT_CUSTOMREQUEST, "POST");
  44. break;
  45. default:
  46. return FALSE;
  47. }
  48. if ($param) {
  49. curl_setopt($require, CURLOPT_POSTFIELDS, $param);
  50. }
  51. if ($isHttps) {
  52. // 跳过证书检查
  53. curl_setopt($require, CURLOPT_SSL_VERIFYPEER, FALSE);
  54. // 检查证书中是否设置域名
  55. curl_setopt($require, CURLOPT_SSL_VERIFYHOST, 2);
  56. }
  57. if ($headers) {
  58. // 设置请求头
  59. curl_setopt($require, CURLOPT_HTTPHEADER, $headers);
  60. }
  61. // 返回结果不直接输出
  62. curl_setopt($require, CURLOPT_RETURNTRANSFER, TRUE);
  63. // 重定向
  64. curl_setopt($require, CURLOPT_FOLLOWLOCATION, TRUE);
  65. // 把返回头包含再输出中
  66. curl_setopt($require, CURLOPT_HEADER, TRUE);
  67. // 发送请求
  68. $response = curl_exec($require);
  69. // 获取头部长度
  70. $headerSize = curl_getinfo($require, CURLINFO_HEADER_SIZE);
  71. // 关闭请求
  72. curl_close($require);
  73. if ($response) {
  74. // 返回头部字符串
  75. $header = substr($response, 0, $headerSize);
  76. // 返回体
  77. $body = substr($response, $headerSize);
  78. // 过滤隐藏非法字符
  79. $bodyTemp = json_encode(array(
  80. 0 => $body
  81. ));
  82. $bodyTemp = str_replace("\ufeff", "", $bodyTemp);
  83. $bodyTemp = json_decode($bodyTemp, TRUE);
  84. $body = trim($bodyTemp[0]);
  85. // 将返回结果头部转成数组
  86. $respondHeaders = array();
  87. $header_rows = array_filter(explode(PHP_EOL, $header), "trim");
  88. foreach ($header_rows as $row) {
  89. $keylen = strpos($row, ":");
  90. if ($keylen) {
  91. $respondHeaders[] = array(
  92. "key" => substr($row, 0, $keylen),
  93. "value" => trim(substr($row, $keylen + 1))
  94. );
  95. }
  96. }
  97. return array(
  98. "headers" => $respondHeaders,
  99. "body" => $body
  100. );
  101. } else {
  102. return FALSE;
  103. }
  104. }

(2)基于Python的 查询指定货币的汇率 API服务请求的代码示例

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # 测试环境: python2.7
  4. # 安装requests依赖 => pip install requests/ easy_install requests
  5. # 导入requests依赖
  6. import requests
  7. import json
  8. import sys
  9. reload(sys)
  10. sys.setdefaultencoding('utf-8')
  11. def apishop_send_request(method, url, params=None, headers=None):
  12. '''
  13. 转发请求到目的主机
  14. @param method str 请求方法
  15. @param url str 请求地址
  16. @param params dict 请求参数
  17. @param headers dict 请求头
  18. '''
  19. method = str.upper(method)
  20. if method == 'POST':
  21. return requests.post(url=url, data=params, headers=headers)
  22. elif method == 'GET':
  23. return requests.get(url=url, params=params, headers=headers)
  24. else:
  25. return None
  26. method = "POST"
  27. url = "https://api.apishop.net/common/exchange/getExchangeByCurrency"
  28. headers = None
  29. params = {
  30. "currency":"", #货币(获取所有货币种类接口中获取)
  31. }
  32. result = apishop_send_request(method=method, url=url, params=params, headers=headers)
  33. if result:
  34. body = result.text
  35. response = json.loads(body)
  36. status_code = response["statusCode"]
  37. if (status_code == '000000'):
  38. # 状态码为000000, 说明请求成功
  39. print('请求成功:%s' % (body,))
  40. else:
  41. # 状态码非000000, 说明请求失败
  42. print('请求失败: %s' % (body,))
  43. else:
  44. # 返回内容异常,发送请求失败
  45. print('发送请求失败')

(3)基于C#的 查询指定货币的汇率 API服务请求的代码示例

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net;
  5. using System.Text;
  6. using System.Web.Script.Serialization;
  7. namespace apishop_sdk
  8. {
  9. class Program
  10. {
  11. /**
  12. * 转发请求到目的主机
  13. * @param method string 请求方法
  14. * @param url string 请求地址
  15. * @param params Dictionary<string,string> 请求参数
  16. * @param headers Dictionary<string,string> 请求头
  17. * @return string
  18. **/
  19. static string apishop_send_request(string method, string url, Dictionary<string, string> param, Dictionary<string, string> headers)
  20. {
  21. string result = string.Empty;
  22. try
  23. {
  24. string paramData = "";
  25. if (param != null && param.Count > 0)
  26. {
  27. StringBuilder sbuilder = new StringBuilder();
  28. foreach (var item in param)
  29. {
  30. if (sbuilder.Length > 0)
  31. {
  32. sbuilder.Append("&");
  33. }
  34. sbuilder.Append(item.Key + "=" + item.Value);
  35. }
  36. paramData = sbuilder.ToString();
  37. }
  38. method = method.ToUpper();
  39. if (method == "GET")
  40. {
  41. url = string.Format("{0}?{1}", url, paramData);
  42. }
  43. HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(url);
  44. if (method == "GET")
  45. {
  46. wbRequest.Method = "GET";
  47. }
  48. else if (method == "POST")
  49. {
  50. wbRequest.Method = "POST";
  51. wbRequest.ContentType = "application/x-www-form-urlencoded";
  52. wbRequest.ContentLength = Encoding.UTF8.GetByteCount(paramData);
  53. using (Stream requestStream = wbRequest.GetRequestStream())
  54. {
  55. using (StreamWriter swrite = new StreamWriter(requestStream))
  56. {
  57. swrite.Write(paramData);
  58. }
  59. }
  60. }
  61. HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();
  62. using (Stream responseStream = wbResponse.GetResponseStream())
  63. {
  64. using (StreamReader sread = new StreamReader(responseStream))
  65. {
  66. result = sread.ReadToEnd();
  67. }
  68. }
  69. }
  70. catch
  71. {
  72. return "";
  73. }
  74. return result;
  75. }
  76. class Response
  77. {
  78. public string statusCode;
  79. }
  80. static void Main(string[] args)
  81. {
  82. string method = "POST";
  83. string url = "https://api.apishop.net/common/exchange/getExchangeByCurrency";
  84. Dictionary<string, string> param = new Dictionary<string, string>();
  85. param.Add("currency", ""); //货币(获取所有货币种类接口中获取)
  86. Dictionary<string, string> headers = null;
  87. string result = apishop_send_request(method, url, param, headers);
  88. if (result == "")
  89. {
  90. //返回内容异常,发送请求失败
  91. Console.WriteLine("发送请求失败");
  92. return;
  93. }
  94. Response res = new JavaScriptSerializer().Deserialize<Response>(result);
  95. if (res.statusCode == "000000")
  96. {
  97. //状态码为000000, 说明请求成功
  98. Console.WriteLine(string.Format("请求成功: {0}", result));
  99. }
  100. else
  101. {
  102. //状态码非000000, 说明请求失败
  103. Console.WriteLine(string.Format("请求失败: {0}", result));
  104. }
  105. Console.ReadLine();
  106. }
  107. }
  108. }

(4)基于Java的 查询指定货币的汇率 API服务请求的代码示例

  1. package net.apishop.www.controller;
  2. import java.io.DataOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.UnsupportedEncodingException;
  6. import java.net.HttpURLConnection;
  7. import java.net.MalformedURLException;
  8. import java.net.URL;
  9. import java.net.URLEncoder;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12. import com.alibaba.fastjson.JSONObject;
  13. /**
  14. * httpUrlConnection访问远程接口工具
  15. */
  16. public class Api
  17. {
  18. /**
  19. * 方法体说明:向远程接口发起请求,返回字节流类型结果
  20. * param url 接口地址
  21. * param requestMethod 请求方式
  22. * param params 传递参数 重点:参数值需要用Base64进行转码
  23. * return InputStream 返回结果
  24. */
  25. public static InputStream httpRequestToStream(String url, String requestMethod, Map<String, String> params){
  26. InputStream is = null;
  27. try{
  28. String parameters = "";
  29. boolean hasParams = false;
  30. // 将参数集合拼接成特定格式,如name=zhangsan&age=24
  31. for (String key : params.keySet()){
  32. String value = URLEncoder.encode(params.get(key), "UTF-8");
  33. parameters += key + "=" + value + "&";
  34. hasParams = true;
  35. }
  36. if (hasParams){
  37. parameters = parameters.substring(0, parameters.length() - 1);
  38. }
  39. // 请求方式是否为get
  40. boolean isGet = "get".equalsIgnoreCase(requestMethod);
  41. // 请求方式是否为post
  42. boolean isPost = "post".equalsIgnoreCase(requestMethod);
  43. if (isGet){
  44. url += "?" + parameters;
  45. }
  46. URL u = new URL(url);
  47. HttpURLConnection conn = (HttpURLConnection) u.openConnection();
  48. // 请求的参数类型(使用restlet框架时,为了兼容框架,必须设置Content-Type为“”空)
  49. conn.setRequestProperty("Content-Type", "application/octet-stream");
  50. //conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  51. // 设置连接超时时间
  52. conn.setConnectTimeout(50000);
  53. // 设置读取返回内容超时时间
  54. conn.setReadTimeout(50000);
  55. // 设置向HttpURLConnection对象中输出,因为post方式将请求参数放在http正文内,因此需要设置为ture,默认false
  56. if (isPost){
  57. conn.setDoOutput(true);
  58. }
  59. // 设置从HttpURLConnection对象读入,默认为true
  60. conn.setDoInput(true);
  61. // 设置是否使用缓存,post方式不能使用缓存
  62. if (isPost){
  63. conn.setUseCaches(false);
  64. }
  65. // 设置请求方式,默认为GET
  66. conn.setRequestMethod(requestMethod);
  67. // post方式需要将传递的参数输出到conn对象中
  68. if (isPost){
  69. DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
  70. dos.writeBytes(parameters);
  71. dos.flush();
  72. dos.close();
  73. }
  74. // 从HttpURLConnection对象中读取响应的消息
  75. // 执行该语句时才正式发起请求
  76. is = conn.getInputStream();
  77. }catch(UnsupportedEncodingException e){
  78. e.printStackTrace();
  79. }catch(MalformedURLException e){
  80. e.printStackTrace();
  81. }catch(IOException e){
  82. e.printStackTrace();
  83. }
  84. return is;
  85. }
  86. public static void main(String args[]){
  87. String url = "https://api.apishop.net/common/exchange/getExchangeByCurrency";
  88. String requestMethod = "POST";
  89. Map<String, String> params = new HashMap<String, String>();
  90. params.put("currency", ""); //货币(获取所有货币种类接口中获取)
  91. String result = null;
  92. try{
  93. InputStream is = httpRequestToStream(url, requestMethod, params);
  94. byte[] b = new byte[is.available()];
  95. is.read(b);
  96. result = new String(b);
  97. }catch(IOException e){
  98. e.printStackTrace();
  99. }
  100. if (result != null){
  101. JSONObject jsonObject = JSONObject.parseObject(result);
  102. String status_code = jsonObject.getString("statusCode");
  103. if (status_code == "000000"){
  104. // 状态码为000000, 说明请求成功
  105. System.out.println("请求成功:" + jsonObject.getString("result"));
  106. }else{
  107. // 状态码非000000, 说明请求失败
  108. System.out.println("请求失败:" + jsonObject.getString("desc"));
  109. }
  110. }else{
  111. // 返回内容异常,发送请求失败,以下可根据业务逻辑自行修改
  112. System.out.println("发送请求失败");
  113. }
  114. }
  115. }

生活常用类API调用的代码示例合集:邮编查询、今日热门新闻查询、区号查询等的更多相关文章

  1. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  2. 天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 全国天气预报:数据来自国家气象局,可根据地名.经纬度GPS.IP查 ...

  3. 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...

  4. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  5. 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 长途汽车查询:全国主要城市的长途汽车时刻查询,汽车站查询 车型大全 ...

  6. C++用LuaIntf调用Lua代码示例

    C++用LuaIntf调用Lua代码示例 (金庆的专栏 2016.12) void LuaTest::OnResponse(uint32_t uLuaRpcId, const std::string& ...

  7. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  8. 常用Java API之Ramdom--用代码模拟猜数小游戏

    常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...

  9. vue指令示例合集

    vue所有指令练习合集.这是个html文件,用chrome打开可查看结果. <!DOCTYPE html> <html lang="en" xmlns:v-on= ...

随机推荐

  1. PowerCLI: One-Liner to get VMs, Clusters, ESX Hosts and Datastores并导入数据库中

    需求:定期自动获取Vm在VCenter中对应的cluster.ESX.Datastore信息,同时将变化或者新增的数据上传到数据库中 解决思路分析: 1 首先使用VMware的powerCLI工具通过 ...

  2. 使用非java代码编程

    使用非JAVA代码     JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...

  3. selenium-java web自动化测试工具

    本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的 我经常使用且相对熟练的部分技术如下(不知道算不算各位大神眼中的辣鸡): ...

  4. Node.js:上传文件,服务端如何获取文件上传进度

    内容概述 multer是常用的Express文件上传中间件.服务端如何获取文件上传的进度,是使用的过程中,很常见的一个问题.在SF上也有同学问了类似问题<nodejs multer有没有查看文件 ...

  5. LVS负载均衡介绍

    LVS介绍 负载均衡器 • 链路负载均衡 (三层负载均衡) • 服务器负载均衡 (四层负载均衡) • 应用层负载均衡 (七层负载均衡) • 全局负载均衡 基本情况 • 实现服务器负载均衡 • 核心功能 ...

  6. Android图像数据传递到C++的一些坑

    最近在做一个Android图象识别的app, 通过相机预览或者是拍照功能获取图像数据,然后将图像数据传递到本地C++的图像识别so库.在这个过程中花的时间最多的就是数据传输问题.谨以此坑,警示未来!  ...

  7. iOS UITableView左滑操作功能的实现(iOS8-11)

    WeTest 导读 本文主要是介绍下iOS 11系统及iOS 11之前的系统在实现左滑操作功能上的区别,及如何自定义左滑的标题颜色.字体大小. 一.左滑操作功能实现 1.如果左滑的时候只有一个操作按钮 ...

  8. HTTP协议篇(一):多工、数据流

    管道机制.多工 管道机制(Pipelining) HTTP 1.1 引入了管道机制(Pipelining),即客户端可通过同一个TCP连接同时发送多个请求.如果客户端需要请求两个资源,以前的做法是在同 ...

  9. 什么是SSL

    什么是SSL 简单来说,在我们使用的浏览器中都默认信任着全世界多个最权威的CA机构(证书颁发机构),如下图: 上图中,受信任的根证书颁发机构列表里的都是我们浏览器中默认信任的CA机构,我们只需要向他们 ...

  10. VUE2.0增删改查附编辑添加model(弹框)组件共用

    Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue- ...