獲取微信服務器IP信息

package demo;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * 獲取微信服務器ip
 * @author pxh
 *2016-12-07
 */
public class GetServiceIp {
    private static String urlPath = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=";
    private static String token = 令牌;
    
    public static String getIps(){
        String ips = null;
        try {
            URL url = new URL(urlPath+token);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //設置鏈接超時時間
            connection.setConnectTimeout(30*1000);
            //設置讀取超時時間
            connection.setReadTimeout(30*1000);
            //設置請求方式
            connection.setRequestMethod("GET");
            connection.setDoInput(true);
            
            connection.connect();
            InputStream is = connection.getInputStream();
            int size = is.available();
            byte[] message = new byte[size];
            is.read(message);
            ips = new String(message,"UTF-8");
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ips;
    }
    
    public static void main(String[] args) {
        String ipJson = GetServiceIp.getIps();
        System.out.println("微信服務器ip:"+ipJson);
        List<String> listIps = new ArrayList<String>();
        /**
         * 使用gosn解析json
         */
        JsonObject jsonObject = new JsonParser().parse(ipJson).getAsJsonObject();
        JsonArray jsonArray = jsonObject.getAsJsonArray("ip_list");
        Gson gson = new Gson();
        for(JsonElement element : jsonArray){
            String ip = gson.fromJson(element, String.class);
            if(null != ip && !"".equals(ip) && ip.contains("/")){ //"58.251.80.32\/27"  因爲微信獲取的ip中有這種格式的數據所以進行了如下處理
                int startindex =ip.indexOf("/");
                listIps.add(ip.substring(0,startindex));
                listIps.add(ip.substring(0,ip.lastIndexOf(".")+1)+ip.substring(startindex+1));
            }else{
                listIps.add(ip);
            }
        }
        
        
    }
    
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章