iData是一个连接服务商与开发者的第三方分发平台。平台致力于为开发者提供最全面便捷的服务,以及帮助服务商开放服务,提升API调用量。
目前涵盖国内外18个行业,超过200个主流平台,最实时,最准确,最全面的数据API,iData一直致力于为企业,机构,个人研究者提供技术支持。我们利用掌握的先进的数据采集,处理及分析技术,用创新的方法把互联网数据接口化,让数据变得简单易用,创造价值,同时又大大降低了开发成本。
登录iData
通过“搜索”或“分类目录”找到想要的服务
即用:使用我们提供的apikey
(如果不知道怎么使用,我们提供多语言的请求事例)
当前阶段所有服务全部免费
用户查询到自己需要的API,点击进入调试页面。
接口地址
在调试页面,点击左侧平台选取,然后选择类型,则在右侧即可查看到“接口地址”,并且显示服务的请求方法。
请求参数
根据服务商提供请求方法类型和参数位置不同,请求参数的列表有所不同,但大致相似。请求参数分header区参数和urlParam参数。
Header参数,是将参数和值放入请求的头部,urlParam参数则将参数拼接到api的url地址后面发送过来,具体每个参数的含义和要求,看参数列表即可。
请求示例
在调试页面,展示了请求示例。
返回的示例有JSON等格式,根据响应结果数据结构,进行解析即可。
App key简称开发者密钥,用于验证API接入合法性,是为每一个用户访问API的授权方式和凭证,每个API Key唯一标识一个API使用者,用户可以在申请页面免费获取相应的API key,当用户访问API服务时,会把自己的API Key作为请求参数传递给API服务。
APIKEY用于解决网络接口认证的安全问题。目前只是对一个用户的合法性验证。
目前iData是处于免费的阶段,会存在一定的安全问题,后期会加上https等安全访问机制。
如果出现被冒用,则联系iData客服进行解决。客服邮箱:iData.market@iData.com
Q1 API区域是什么
有些API是部署在多个区域服务器,用户选择离客户端服务器相近区域的API服务会提高稳定性及响应时间
Q2 如何选择API区域
用户通过点击"立即测试"进入API测试页面,可以选择不同接口区域的API服务(如图1所示),切换区域对应会影响通过复制链接获取请求API的目标地址。
(图1) API区域切换
Q1 如何切换Https及Http协议API服务
用户通过点击"立即测试"进入API测试页面,可以选择Https或Http协议(如图1所示)对API进行调用,通过复制链接获取请求API的目标地址。
(图1) API Http(s)协议切换
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
以下举东方头条API(https://www.idata.cn/product/test/244)作为例子,讲述如何通过pageToken来实现API翻页。(需注意pageToken是一个字符串,可以理解为获取下一页数据的翻页码)。
1.第一次请求(如图1),如果输入的请求参数pageToken为空,默认返回的是第一页数据。如果返回数据中hasNext为true则表示有下一页数据,false表示没有下一页。
2. 把图1中的翻页码PageToken "9223370493470705107",作为pageToken参数值获取下一页结果(如图2), 提交请求或复制链接在浏览器中打开,即可获取当前请求中下一页的数据。
3. 以下以Java作为例子,讲述在同一相同条件下(除pageToken不一样),如何通过翻页获取所有的数据。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.net.URLConnection;
public class Example {
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
URL realUrl = new URL(url+'&apikey=');
URLConnection conn = realUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(body);
out.flush();
InputStream instream = conn.getInputStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
instream.close();
}
}
public static void main(String[] args) throws IOException, JSONException {
// 请求示例 url 默认请求参数已经做URL编码
String url = "http://api01.idataapi.cn:8000/news/eastday?kw=nba";
JSONObject json = getRequestFromUrl(url);
System.out.println(json.toString());
while(json.getString('pageToken') != null){
String pageToken = json.getString('pageToken');
url = url + '&pageToken='+pageToken;
json = getRequestFromUrl(url);
System.out.println(json.toString());
}
}
}