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 params)

{

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 params = new HashMap(); params.put("ISBN", ""); //ISBN书号,如“9787530212837”

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("发送请求失败");

}

}

}

相关文档
最新文档