全国景点查询
万维易源 官方文档
全国景点查询接口(来自同程网的合作数据),根据省、市、县名称及景点名称查询景点信息,包括坐标、地址、描述、图片列表、门票价信息
基本说明:
接口地址:http://route.showapi.com/268-1
返回格式:json
请求方式:get/post
请求示例:0
请求参数说明:
名称 类型 必填 说明
keyword String 选填 景点名称的汉字。
proId String 选填 省级id
cityId String 选填 城市id
areaId String 选填 镇id
page String 选填 第几页
返回参数说明:
名称 类型 说明
agebea SpotPageBea 分页数据
allNum String 总数量
allPage String 总页数,每页20条
contentlist Spot[] 页面内数据列表
roId String 省级id
roName String 省级名称
cityId String 城市id
cityName String 城市名
areaId String 镇id
areaName String 镇名称
ame String 景点名称
address String 景点地址
location String 坐标
ummary String 景点描述
rice String 最低门票价
icList Picture[] 图片列表
riceList Price[] 门票价格列表
currentPage String 当前页
maxResult String 每页最大条目数
ret_code String 0为成功,其他失败
JSON返回示例:
{
	"showapi_res_code": 0,
	"showapi_res_error": "",
	"showapi_res_body": {
		"pagebean": {
			"allNum": 32,
			"allPages": 2,
			"contentlist": [{
				"address": "颜山公园路4号原山国家森林公园",
				"areaId": "3940",
				"areaName": "临淄区",
				"cityId": "299",
				"cityName": "淄博",
				"id": "7472",
				"location": {
					"lat": "36.49018821",
					"lon": "117.84976357"
				},
				"name": "原山泰山行宫",
				"picList": [{
						"picUrl": "http://pic3.40017.cn/scenery/destination/2015/04/16/09/33K4AW.jpg",
						"picUrlSmall": "http://pic3.40017.cn/scenery/destination/2015/04/16/09/33K4AW_130x130_00.jpg"
					},
					{
						"picUrl": "http://pic3.40017.cn/scenery/destination/2015/04/16/09/slKVTv.jpg",
						"picUrlSmall": "http://pic3.40017.cn/scenery/destination/2015/04/16/09/slKVTv_130x130_00.jpg"
					}
				],
				"priceList": [],
				"proId": "22",
				"proName": "山东",
				"summary": "原山泰山行宫位于博山城区西南的凤凰山巅,为市级重点文物保护单位。行宫始建于1602年(明万历三十年),历经几度劫难,清代、民国曾多次重修。现存建筑和布局均系明、清风格。现为颜山公园名胜之一。"
			}],
			"currentPage": 1,
			"maxResult": 20
		},
		"ret_code": 0
	}
}
服务级错误码参照
错误码 说明
-1 系统调用错误
-2 可调用次数或金额为0
-3 读取超时
-4 服务端返回数据解析错误
-5 后端服务器DNS解析错误
-6 服务不存在或未上线
-1000 系统维护
-1002 showapi_appid字段必传
-1003 showapi_sign字段必传
-1004 签名sign验证有误
-1005 showapi_timestamp无效
-1006 app无权限调用接口
-1007 没有订购套餐
-1008 服务商关闭对您的调用权限
-1009 调用频率受限
-1010 找不到您的应用
-1011 子授权app_child_id无效
-1012 子授权已过期或失效
-1013 子授权ip受限
完整教学代码示例
public static void main(String path[]) throws Exception {
URL u = new URL("http://route.showapi.com/268-1?showapi_appid%3Dmyappid%26keyword%3D%E6%B3%B0%E5%B1%B1%26proId%3D%26cityId%3D%26areaId%3D%26page%3D%26showapi_sign%3Dmysecret");
InputStream in = u.openStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
byte buf[] = new byte[1024];
int read = 0;
while ((read = in .read(buf)) > 0) {
out.write(buf, 0, read);
}
} finally {
if ( in != null) {
in .close();
}
}
byte b[] = out.toByteArray();
System.out.println(new String(b, "utf-8"));
}
<?php
/**
 * Created by PhpStorm.
 * User: FZS
 * Time: 2019/3/15 17:50
 */
//----------------------------------
// 易源 全国景点查询 调用类
//----------------------------------
class freeApi{
    private $apiId = false; //易源appid
    private $apiSecret = false; //易源secret
    private $apiUrl = 'http://route.showapi.com/268-1';
    public function __construct($apiid,$secretkey){
        $this->apiId = $apiid;
        $this->apiSecret = $secretkey;
    }
    /**
     * url拼接
     * @return string
     */
    private function handleParam($paramArr,$showapi_secret){
        $paraStr = "";
        $signStr = "";
        ksort($paramArr);
        foreach ($paramArr as $key => $val) {
            if ($key != '' && $val != '') {
                $signStr .= $key.$val;
                $paraStr .= $key.'='.urlencode($val).'&';
            }
        }
        $signStr .= $showapi_secret;//排好序的参数加上secret,进行md5
        $sign = strtolower(md5($signStr));
        $paraStr .= 'showapi_sign='.$sign;//将md5后的值作为参数,便于服务器的效验
        return '?'.$paraStr;
    }
    /**
     * 将JSON内容转为数据,并返回
     * @param string $content [内容]
     * @return array
     */
    public function returnArray($content){
        return json_decode($content,true);
    }
    /**
     * 获取 全国景点查询 结果
     * @return array
     */
    public function getResult(){
        $paramArr = [
            'showapi_appid'=> $this->apiId,
            'keyword'=> "泰山",
            'proId'=> "",
            'cityId'=> "",
            'areaId'=> "",
            'page'=> ""
        ];
        return $this->returnArray($this->freeApiCurl($this->apiUrl.$this->handleParam($paramArr,$this->apiSecret)));
    }
    /**
     * 请求接口返回内容
     * @param  string $url [请求的URL地址]
     * @param  string $params [请求的参数]
     * @param  int $ipost [是否采用POST形式]
     * @return  string
     */
    public function freeApiCurl($url,$params=false,$ispost=0){
        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_USERAGENT , 'free-api' );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
        if( $ispost )
        {
            curl_setopt( $ch , CURLOPT_POST , true );
            curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
            curl_setopt( $ch , CURLOPT_URL , $url );
        }
        else
        {
            if($params){
                curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
            }else{
                curl_setopt( $ch , CURLOPT_URL , $url);
            }
        }
        $response = curl_exec( $ch );
        if ($response === FALSE) {
            return false;
        }
        curl_close( $ch );
        return $response;
    }
}
//推荐使用npm安装使用sdk: npm install --save showapi-sdk
'use strict';

var showapiSdk = require('showapi-sdk');

//设置你测试用的appId和secret,img
var appId='';
var secret='';
//开启debug
//showapiSdk.debug(true);
if(!(appId&&secret)){
  console.error('请先设置appId等测试参数,详见样例代码内注释!')
  return;
}
//全局默认设置
showapiSdk.setting({
  url:"http://route.showapi.com/268-1",//你要调用的API对应接入点的地址,注意需要先订购了相关套餐才能调
  appId:appId,//你的应用id
  secret:secret,//你的密钥
  timeout:5000,//http超时设置
  options:{//默认请求参数,极少用到
    testParam:'test'
  }
})

var request=showapiSdk.request();
request.appendText('keyword','泰山');
request.appendText('proId','');
request.appendText('cityId','');
request.appendText('areaId','');
request.appendText('page','');
request.post(function(data){
  console.info(data)
})
package main

import (
"showSdk/normalRequest"
"fmt"
)
res := normalRequest.ShowapiRequest("http://route.showapi.com/268-1",my_appId,"my_appSecret")
res.AddTextPara("keyword","泰山")
res.AddTextPara("proId","")
res.AddTextPara("cityId","")
res.AddTextPara("areaId","")
res.AddTextPara("page","")
//res.AddFilePara("img", "C:\\Users\\showa\\Desktop\\使用过的\\4.png")//文件上传时设置
fmt.Println(res.Post())
# python3.6.5
# 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests
from ShowapiRequest import ShowapiRequest

r = ShowapiRequest("http://route.showapi.com/268-1","my_appId","my_appSecret" )
r.addBodyPara("keyword", "泰山")
r.addBodyPara("proId", "")
r.addBodyPara("cityId", "")
r.addBodyPara("areaId", "")
r.addBodyPara("page", "")
# r.addFilePara("img", r"C:\Users\showa\Desktop\使用过的\4.png") #文件上传时设置
res = r.post()
print(res.text) # 返回信息