API知识-1
来源:互联网 发布:网络机顶盒那个牌子的好 编辑:程序博客网 时间:2024/06/05 04:22
1.先介绍一个通过ISBN获取图书信息的网站:
https://api.douban.com/v2/book/isbn/:9787111128069
9787111128069是书号,通过这个链接可以获取图书信息json格式
2.通过java实现获取json信息,import net.sf.json.JSONObject;
需要下载一个包
这是聚合数据:(但不是根据书号提取信息,而是根据大类提取信息)key需要到聚合数据厂商申请
import
java.io.BufferedReader;
import
java.io.DataOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.UnsupportedEncodingException;
import
java.net.HttpURLConnection;
import
java.net.URL;
import
java.net.URLEncoder;
import
java.util.HashMap;
import
java.util.Map;
import
net.sf.json.JSONObject;
/**
*图书电商数据调用示例代码 - 聚合数据
*在线接口文档:http://www.juhe.cn/docs/50
**/
public
class
JuheDemo {
public
static
final
String DEF_CHATSET =
"UTF-8"
;
public
static
final
int
DEF_CONN_TIMEOUT =
30000
;
public
static
final
int
DEF_READ_TIMEOUT =
30000
;
public
static
String userAgent =
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
;
//配置您申请的KEY
public
static
final
String APPKEY =
"*************************"
;
//1.图书分类目录
public
static
void
getRequest1(){
String result =
null
;
String url =
"http://apis.juhe.cn/goodbook/catalog"
;//请求接口地址
Map params =
new
HashMap();
//请求参数
params.put(
"key"
,APPKEY);
//应用APPKEY(应用详细页查询)
params.put(
"dtype"
,
""
);
//返回数据的格式,xml或json,默认json
try
{
result =net(url, params,
"GET"
);
JSONObject object = JSONObject.fromObject(result);
if
(object.getInt(
"error_code"
)==
0
){
System.out.println(object.get(
"result"
));
}
else
{
System.out.println(object.get(
"error_code"
)+
":"
+object.get(
"reason"
));
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
//2.图书内容
public
static
void
getRequest2(){
String result =
null
;
String url =
"http://apis.juhe.cn/goodbook/query"
;//请求接口地址
Map params =
new
HashMap();
//请求参数
params.put(
"key"
,APPKEY);
//应用APPKEY(应用详细页查询)
params.put(
"catalog_id"
,
""
);
//目录编号
params.put(
"pn"
,
""
);
//数据返回起始
params.put(
"rn"
,
""
);
//数据返回条数,最大30
params.put(
"dtype"
,
""
);
//返回数据的格式,xml或json,默认json
try
{
result =net(url, params,
"GET"
);
JSONObject object = JSONObject.fromObject(result);
if
(object.getInt(
"error_code"
)==
0
){
System.out.println(object.get(
"result"
));
}
else
{
System.out.println(object.get(
"error_code"
)+
":"
+object.get(
"reason"
));
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
public
static
void
main(String[] args) {
getRequest2();
}
/**
*
* @param strUrl 请求地址
* @param params 请求参数
* @param method 请求方法
* @return 网络请求字符串
* @throws Exception
*/
public
static
String net(String strUrl, Map params,String method)
throws
Exception {
HttpURLConnection conn =
null
;
BufferedReader reader =
null
;
String rs =
null
;
try
{
StringBuffer sb =
new
StringBuffer();
if
(method==
null
|| method.equals(
"GET"
)){
strUrl = strUrl+
"?"
+urlencode(params);
}
URL url =
new
URL(strUrl);
conn = (HttpURLConnection) url.openConnection();
if
(method==
null
|| method.equals(
"GET"
)){
conn.setRequestMethod(
"GET"
);
}
else
{
conn.setRequestMethod(
"POST"
);
conn.setDoOutput(
true
);
}
conn.setRequestProperty(
"User-agent"
, userAgent);
conn.setUseCaches(
false
);
conn.setConnectTimeout(DEF_CONN_TIMEOUT);
conn.setReadTimeout(DEF_READ_TIMEOUT);
conn.setInstanceFollowRedirects(
false
);
conn.connect();
if
(params!=
null
&& method.equals(
"POST"
)) {
try
{
DataOutputStream out =
new
DataOutputStream(conn.getOutputStream());
out.writeBytes(urlencode(params));
}
catch
(Exception e) {
// TODO: handle exception
}
}
InputStream is = conn.getInputStream();
reader =
new
BufferedReader(
new
InputStreamReader(is, DEF_CHATSET));
String strRead =
null
;
while
((strRead = reader.readLine()) !=
null
) {
sb.append(strRead);
}
rs = sb.toString();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(reader !=
null
) {
reader.close();
}
if
(conn !=
null
) {
conn.disconnect();
}
}
return
rs;
}
//将map型转为请求参数型
public
static
String urlencode(Map<String,Object>data) {
StringBuilder sb =
new
StringBuilder();
for
(Map.Entry i : data.entrySet()) {
try
{
sb.append(i.getKey()).append(
"="
).append(URLEncoder.encode(i.getValue()+
""
,
"UTF-8"
)).append(
"&"
);
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return
sb.toString();
}
}
阅读全文
0 0
- API知识-1
- Win32+API 知识积累
- API知识入门
- RESTful API知识整理
- shell API 的相关知识
- SDK/API等相关知识
- 【黑马程序员】API知识总结
- windows api的一些知识
- JAVA常用API小知识
- 知识图谱+Recorder︱中文知识图谱API与工具
- 知识图谱+Recorder︱中文知识图谱API与工具
- 对于Android3.1(API level 12)Android USB Host知识(1)
- 积累:SDK/API等相关知识
- 关于api hook的知识整理
- V4L2 API详解 <一> 背景知识
- OpenOffice API (七) 其他知识
- V4L2 API详解 <一> 背景知识
- V4L2 API详解 <一> 背景知识
- BOM(浏览器对象模型)
- UVa 101
- 毕业考试
- 解决ExecutionException: com.android.dex.DexException: Multiple dex files define XXX
- 机器学习教程之9-SVM的sklearn实现
- API知识-1
- Lua中的字符串函数库
- laravel 实现上传
- 多线程之编程面试题
- 写好的验证界面(四位数数据随机组合)
- shell相关命令(一)
- C++中关于无法无法解析外部错误的解决方案
- spring整合activemq
- SpringMVC拦截器配置详解