eoLinker-API_Shop_ISBN书号查询_API接口_Java调用示例代码
eoLinker-API Shop ISBN书号查询 Java调用示例代码
ISBN书号查询
通过10位或13位ISBN查询书号信息,包含书名、作者、出版社、价格、出版日期、印次、装帧方式、语种、摘要等信息。
该产品拥有以下APIs:
1.ISBN书号查询
注意,该示例代码仅适用于https://www.360docs.net/doc/cb14551256.html,网站下API使用该产品前,您需要通过https://https://www.360docs.net/doc/cb14551256.html,/#/api/detail/?productID=79申请API服务
1.ISBN书号查询
package net.apishop.www.controller;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import https://www.360docs.net/doc/cb14551256.html,.HttpURLConnection;
import https://www.360docs.net/doc/cb14551256.html,.MalformedURLException;
import https://www.360docs.net/doc/cb14551256.html,.URL;
import https://www.360docs.net/doc/cb14551256.html,.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
/**
* httpUrlConnection访问远程接口工具
*/
public class Api
{
/**
* 方法体说明:向远程接口发起请求,返回字节流类型结果
* param url 接口地址
* param requestMethod 请求方式
* param params 传递参数重点:参数值需要用Base64进行转码
* return InputStream 返回结果
*/
public static InputStream httpRequestToStream(String url, String re questMethod, Map
{
InputStream is = null;
try
{
String parameters = "";
boolean hasParams = false;
// 将参数集合拼接成特定格式,如name=zhangsan&age=24
for (String key : params.keySet())
{
String value = URLEncoder.encode(params.get(key), "UTF-8");
parameters += key + "=" + value + "&";
hasParams = true;
}
if (hasParams)
{
parameters = parameters.substring(0, parameters.length() - 1);
}
// 请求方式是否为get
boolean isGet = "get".equalsIgnoreCase(requestMethod);
// 请求方式是否为post
boolean isPost = "post".equalsIgnoreCase(requestMethod);
if (isGet)
{
url += "?" + parameters;
}
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnecti on();
// 请求的参数类型(使用restlet框架时,为了兼容框架,必须设置Con tent-Type为“”空)
conn.setRequestProperty("Content-Type", "application/octet-stream");
// conn.setRequestProperty("Content-Type", "application/x-w ww-form-urlencoded");
// 设置连接超时时间
conn.setConnectTimeout(50000);
// 设置读取返回内容超时时间
conn.setReadTimeout(50000);
// 设置向HttpURLConnection对象中输出,因为post方式将请求参数放在http正文内,因此需要设置为ture,默认false
if (isPost)
{
conn.setDoOutput(true);
}
// 设置从HttpURLConnection对象读入,默认为true
conn.setDoInput(true);
// 设置是否使用缓存,post方式不能使用缓存
if (isPost)
{
conn.setUseCaches(false);
}
// 设置请求方式,默认为GET
conn.setRequestMethod(requestMethod);
// post方式需要将传递的参数输出到conn对象中
if (isPost)
{
DataOutputStream dos = new DataOutputStream(conn.getOut putStream());
dos.writeBytes(parameters);
dos.flush();
dos.close();
}
// 从HttpURLConnection对象中读取响应的消息
// 执行该语句时才正式发起请求
is = conn.getInputStream();
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
return is;
}
public static void main(String args[])
{
String url = "https://https://www.360docs.net/doc/cb14551256.html,/common/postcode/getPostCo deByAddr";
String requestMethod = "POST";
Map
String result = null;
try
{
InputStream is = httpRequestToStream(url, requestMethod, pa rams);
byte[] b = new byte[is.available()];
is.read(b);
result = new String(b);
}
catch(IOException e)
{
e.printStackTrace();
}
if (result != null)
{
JSONObject jsonObject = JSONObject.parseObject(result);
String status_code = jsonObject.getString("statusCode");
if (status_code == "000000")
{
// 状态码为000000, 说明请求成功
System.out.println("请求成功:" + jsonObject.getString("resu lt"));
}
else
{
// 状态码非000000, 说明请求失败
System.out.println("请求失败:" + jsonObject.getString("desc "));
}
}
else
{
// 返回内容异常,发送请求失败,以下可根据业务逻辑自行修改
System.out.println("发送请求失败");
}
}
}