**
使用第三方接口注意:
**
1.参考文档
1.1:请求接入点/ API point
1.2:请求参数/ Request parameter
1.3:返回参数/ Return parameter
2.解析json
2.1:多层json嵌套
2.1:多层嵌套加数组
上面都ok了,那么就可以驾驭大部分api了。
易源:https://www.showapi.com/share(每天20次调用api次数)
//这里需要替换为你自己的showapi_appid和showapi_sign,你可以在这里找到 https://www.showapi.com/console#/myApp
ShowApiRequest req=new ShowApiRequest("http://route.showapi.com/64-19","showapi_appid","showapi_sign");
req.addTextPara("com","zhongtong");
String res=req.post();
System.out.println(res);
易源有自己封装好的sdk,jar。适合小白使用。很好理解
聚合数据:https://www.juhe.cn/(无封装sdk,和易源一样,但是比易源次数多)
接口大全:https://www.free-api.com/(接口非常多,无封装sdk)
自写调用api方法(基本可以通用,适合大部分api接口):
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@WebServlet("/get")
public class JHData extends HttpServlet{
public static final String APPKEY ="44c82f99d200d82949d9ba27ebd7c81c";
public static final String APPKEY1="afb23abbb9583547bfaf8ee097967acd";
public static final String APPKEY2="bd9ba4e73a8afdf03dad1a112416191d";
//将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();
}
/**
*
* @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);
// }
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.connect();
// if (params!= null && method.equals("POST")) {
// try {
// DataOutputStream out = new DataOutputStream(conn.getOutputStream());
// out.writeBytes(urlencode(params));
// } catch (Exception e) {
//
// }
// }
InputStream is = conn.getInputStream();
reader = new BufferedReader(new InputStreamReader(is));
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();
}
}
// String[] split = rs.split(",");
// for (String a:split){
// System.out.println(a);
// }
return rs;
}
//1.身份证信息查询
public static void getRequest1(){
String result =null;
String url ="http://apis.juhe.cn/idcard/index";//请求接口地址
Map params = new HashMap();//请求参数
params.put("cardno","***********");//身份证号码
params.put("dtype","");//返回数据格式:json或xml,默认json
params.put("key",APPKEY);//你申请的key
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
JSONObject result1=object.getJSONObject("result");
System.out.println(object);
String area=result1.getString("area");
String sex=result1.getString("sex");
String birthday=result1.getString("birthday");
String verify=result1.getString("verify");
System.out.println(area);
System.out.println(sex);
System.out.println(birthday);
System.out.println(verify);
} catch (Exception e) {
e.printStackTrace();
}
}
//1.二维码生成
public static void getImg(){
String result =null;
String url ="http://apis.juhe.cn/qrcode/api";//请求接口地址
Map params = new HashMap();//请求参数
params.put("text","您好");//身份证号码
params.put("dtype","");//返回数据格式:json或xml,默认json
params.put("key",APPKEY1);//你申请的key
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
JSONObject result1=object.getJSONObject("result");
System.out.println(object);
String base64_image=result1.getString("base64_image");
System.out.println(base64_image);
// req.setAttribute("erimg",base64_image);
//req.getRequestDispatcher("index.jsp").forward(req,res);
} catch (Exception e) {
e.printStackTrace();
}
}
//1.天气信息查询
public static void weather(){
String result =null;
String url ="http://apis.juhe.cn/simpleWeather/query";//请求接口地址
Map params = new HashMap();//请求参数
params.put("city","成都");//城市地址
params.put("dtype","");//返回数据格式:json或xml,默认json
params.put("key",APPKEY2);//你申请的key
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
JSONObject result1=object.getJSONObject("result");
// System.out.println(object);
String city=result1.getString("city");
JSONObject realtime=result1.getJSONObject("realtime");
String temperature=realtime.getString("temperature");
String humidity=realtime.getString("humidity");
String info=realtime.getString("info");
String wid=realtime.getString("wid");
String direct=realtime.getString("direct");
String power=realtime.getString("power");
String aqi=realtime.getString("aqi");
System.out.println(city+" :"+info+","+direct+","+power);
JSONArray future =result1.getJSONArray("future");
// System.out.println(future);
for(int i=0;i<future.size();i++){
JSONObject one=future.getJSONObject(i);
// System.out.println(one);
String date=one.getString("date");
String temperature1=one.getString("temperature");
String weather=one.getString("weather");
String direct1=one.getString("direct");
JSONObject wid1=one.getJSONObject("wid");
String day=wid1.getString("day");
String night=wid1.getString("night");
System.out.println(date+","+temperature1+","+weather+","+direct1+","+day+","+night);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
getRequest1();
getImg();
weather();
//
// String result =null;
// String url ="https://v1.alapi.cn/api/kd";//请求接口地址
// Map params = new HashMap();//请求参数
// params.put("number","75340310260237");//身份证号码
// result =net(url, params, "GET");
// JSONObject object = JSONObject.fromObject(result);
// System.out.println(object);
// JSONObject data=object.getJSONObject("data");
//// String nu=data.getString("nu");
//// String com=data.getString("com");
//// System.out.println(nu+","+com);
// JSONArray info=data.getJSONArray("info");
// for (int i=0;i<info.size();i++){
// JSONObject index=info.getJSONObject(i);
// String time=index.getString("time");
// String content=index.getString("content");
// System.out.println(time+","+content);
// System.out.println("---------------------------------");
//
// }
}
}