json数据解析获取全国城市并且添加到数据库中(mavean、城市接口)

json数据解析获取城市并且添加到数据库中(mavean、需要用到网上的城市接口)

一、在eclipse中运用mavean开源项目管理工具

目录如下:

json数据解析获取全国城市并且添加到数据库中(mavean、城市接口)_第1张图片

1、在eclipse中创建一个mavean项目,然后选择含有webapp的Archetype,填写GroupId(com.cxr),还有artifactId

2、在pom.xml中


            com.alibaba
            fastjson
            1.2.15
        

       
            org.apache.httpcomponents
            httpclient
            4.2.1
       

       
            org.apache.httpcomponents
            httpcore
            4.2.1
       

       
            commons-lang
            commons-lang
            2.6
       

       
            org.eclipse.jetty
            jetty-util
            9.3.7.v20160115
       

   
      junit
      junit
      4.8.1
      test
   

      
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

        
            javax.servlet
            jstl
            1.2
        


        
            javax.servlet.jsp
            jsp-api
            2.2
            provided
        

            
        mysql
        mysql-connector-java
        5.1.20


        
            com.alibaba
            druid
            1.0.29
        

        
        
            log4j
            log4j
            1.2.16
        

 
 
    stady1107Mavean2_api
    
            
                
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8081
                    /admin
                

            

        

 


3、DBUil文件,自己创建

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.log4j.Logger;

import com.alibaba.druid.pool.DruidDataSourceFactory;

public class DBUtil {
    private static Logger log = Logger.getLogger(DBUtil.class);

    private static DataSource ds;

    static {
        try {
            InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
            Properties props = new Properties();
            props.load(in);
            
            ds = DruidDataSourceFactory.createDataSource(props);
            log.info("数据库连接池初始化成功.....");
        } catch (Exception ex) {
            log.error("初始化数据库连接池异常:" + ex.getMessage());
        }
    }

    /**
     * 获取数据连接
     *
     * @return
     */
    public static Connection getConnection() {
        try {
            Connection conn = ds.getConnection();
            log.info("获取数据库连接成功!");
            return conn;
        } catch (SQLException e) {
            log.error("获取数据库连接失败" + e.getMessage());
        }
        return null;
    }

    /**
     * 释放资源
     *
     * @param conn
     * @param pst
     */
    public static void close(Connection conn, PreparedStatement pst) {
        try {
            pst.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 释放资源
     *
     * @param conn
     * @param pst
     * @param rs
     */
    public static void close(Connection conn, PreparedStatement pst, ResultSet rs) {
        try {
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                pst.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

4、App.java文件;直接在阿里云中》》云市场》搜索“天气预报”》》获得城市接口

package com.cxr;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;

import model.City;
import model.R;
import util.DBUtil;
import util.HttpUtil;

public class App {
    public static void main(String[] args) {
        String host = "http://jisutqybmf.market.alicloudapi.com";
        String path = "/weather/city";
        String method = "GET";
        String appcode = "a24c7b512fc840f29a322376d0524bb7";
        Map headers = new HashMap();
        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 8a24c7b512fc840f29a322376d0524bb7
        headers.put("Authorization", "APPCODE " + appcode);
        Map querys = new HashMap();


        try {
            /**
            * 重要提示如下:
            * HttpUtils请从
            * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
            * 下载
            *
            * 相应的依赖请参照
            * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
            */
            HttpResponse response = HttpUtil.doGet(host, path, method, headers, querys);
            System.out.println(response.toString());
            //获取response的body
            //System.out.println(EntityUtils.toString(response.getEntity()));
            String json = EntityUtils.toString(response.getEntity());
            R r = JSON.parseObject(json, R.class);
            List result = r.getResult();
            Connection conn=DBUtil.getConnection();
            PreparedStatement pst = conn.prepareStatement("insert into city values(?,?,?,?)");
            
            for(City c:result) {
                pst.setInt(1, c.getCityid());
                pst.setInt(2, c.getParentid());
                pst.setString(3, c.getCitycode());
                pst.setString(4, c.getCity());
                pst.execute();
            }
            DBUtil.close(conn, pst);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


5、HttpUtil 文件,直接在获取接口的页面复制

package util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class HttpUtil {
        
        /**
         * get
         *
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @return
         * @throws Exception
         */
        public static HttpResponse doGet(String host, String path, String method,
                Map headers,
                Map querys)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpGet request = new HttpGet(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }
            
            return httpClient.execute(request);
        }
        
        /**
         * post form
         *
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @param bodys
         * @return
         * @throws Exception
         */
        public static HttpResponse doPost(String host, String path, String method,
                Map headers,
                Map querys,
                Map bodys)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpPost request = new HttpPost(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }

            if (bodys != null) {
                List nameValuePairList = new ArrayList();

                for (String key : bodys.keySet()) {
                    nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
                }
                UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
                formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
                request.setEntity(formEntity);
            }

            return httpClient.execute(request);
        }    
        
        /**
         * Post String
         *
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @param body
         * @return
         * @throws Exception
         */
        public static HttpResponse doPost(String host, String path, String method,
                Map headers,
                Map querys,
                String body)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpPost request = new HttpPost(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }

            if (StringUtils.isNotBlank(body)) {
                request.setEntity(new StringEntity(body, "utf-8"));
            }

            return httpClient.execute(request);
        }
        
        /**
         * Post stream
         *
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @param body
         * @return
         * @throws Exception
         */
        public static HttpResponse doPost(String host, String path, String method,
                Map headers,
                Map querys,
                byte[] body)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpPost request = new HttpPost(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }

            if (body != null) {
                request.setEntity(new ByteArrayEntity(body));
            }

            return httpClient.execute(request);
        }
        
        /**
         * Put String
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @param body
         * @return
         * @throws Exception
         */
        public static HttpResponse doPut(String host, String path, String method,
                Map headers,
                Map querys,
                String body)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpPut request = new HttpPut(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }

            if (StringUtils.isNotBlank(body)) {
                request.setEntity(new StringEntity(body, "utf-8"));
            }

            return httpClient.execute(request);
        }
        
        /**
         * Put stream
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @param body
         * @return
         * @throws Exception
         */
        public static HttpResponse doPut(String host, String path, String method,
                Map headers,
                Map querys,
                byte[] body)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpPut request = new HttpPut(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }

            if (body != null) {
                request.setEntity(new ByteArrayEntity(body));
            }

            return httpClient.execute(request);
        }
        
        /**
         * Delete
         *  
         * @param host
         * @param path
         * @param method
         * @param headers
         * @param querys
         * @return
         * @throws Exception
         */
        public static HttpResponse doDelete(String host, String path, String method,
                Map headers,
                Map querys)
                throws Exception {        
            HttpClient httpClient = wrapClient(host);

            HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
            for (Map.Entry e : headers.entrySet()) {
                request.addHeader(e.getKey(), e.getValue());
            }
            
            return httpClient.execute(request);
        }
        
        private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException {
            StringBuilder sbUrl = new StringBuilder();
            sbUrl.append(host);
            if (!StringUtils.isBlank(path)) {
                sbUrl.append(path);
            }
            if (null != querys) {
                StringBuilder sbQuery = new StringBuilder();
                for (Map.Entry query : querys.entrySet()) {
                    if (0 < sbQuery.length()) {
                        sbQuery.append("&");
                    }
                    if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
                        sbQuery.append(query.getValue());
                    }
                    if (!StringUtils.isBlank(query.getKey())) {
                        sbQuery.append(query.getKey());
                        if (!StringUtils.isBlank(query.getValue())) {
                            sbQuery.append("=");
                            sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
                        }                    
                    }
                }
                if (0 < sbQuery.length()) {
                    sbUrl.append("?").append(sbQuery);
                }
            }
            
            return sbUrl.toString();
        }
        
        private static HttpClient wrapClient(String host) {
            HttpClient httpClient = new DefaultHttpClient();
            if (host.startsWith("https://")) {
                sslClient(httpClient);
            }
            
            return httpClient;
        }
        
        private static void sslClient(HttpClient httpClient) {
            try {
                SSLContext ctx = SSLContext.getInstance("TLS");
                X509TrustManager tm = new X509TrustManager() {
                    public X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                    public void checkClientTrusted(X509Certificate[] xcs, String str) {
                        
                    }
                    public void checkServerTrusted(X509Certificate[] xcs, String str) {
                        
                    }
                };
                ctx.init(null, new TrustManager[] { tm }, null);
                SSLSocketFactory ssf = new SSLSocketFactory(ctx);
                ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
                ClientConnectionManager ccm = httpClient.getConnectionManager();
                SchemeRegistry registry = ccm.getSchemeRegistry();
                registry.register(new Scheme("https", 443, ssf));
            } catch (KeyManagementException ex) {
                throw new RuntimeException(ex);
            } catch (NoSuchAlgorithmException ex) {
                throw new RuntimeException(ex);
            }
        }
    
}

6、City.java文件

package model;

public class City {
    private int cityid;
    private int parentid;
    private String citycode;
    private String city;
    public int getCityid() {
        return cityid;
    }
    public void setCityid(int cityid) {
        this.cityid = cityid;
    }
    public int getParentid() {
        return parentid;
    }
    public void setParentid(int parentid) {
        this.parentid = parentid;
    }
    public String getCitycode() {
        return citycode;
    }
    public void setCitycode(String citycode) {
        this.citycode = citycode;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Override
    public String toString() {
        return  cityid + " " + parentid + " " + citycode + " " + city;
    }
    
}













你可能感兴趣的:(mavean工具,阿里云城市接口)