主要是json返回值的获取
package com.xtisp.service.system;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.Header;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.tomcat.jni.Global;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import com.xtisp.entity.system.IPDic;
import com.xtisp.solution.dao.DaoSupport;
import com.xtisp.util.PageData;
public class IPDicService {
public static void scheduleTask() {
System.out.println("定时处理IP地址");
try {
StringBuilder entityStringBuilder=new StringBuilder();
JSONObject resultJsonObject=null;
String getUrl = String.format("http://ip.taobao.com/service/getIpInfo.php?ip=%s", "47.90.33.254");
CloseableHttpClient httpclient = HttpClients.createDefault();
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(1000)
.setConnectTimeout(3000)
.build();
HttpGet httpGet = new HttpGet(getUrl);
//httpGet.addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
//httpGet.addHeader("Accept-Encoding","gzip, deflate, sdch");
//httpGet.addHeader("Accept-Language","zh-CN,zh;q=0.8");
//httpGet.addHeader("Cache-Control","no-cache");
//httpGet.addHeader("Host","ip.taobao.com");
//httpGet.addHeader("Pragma","no-cache");
//httpGet.addHeader("Proxy-Connection","keep-alive");
//httpGet.addHeader("Upgrade-Insecure-Requests","1");
//httpGet.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36name, value");
httpGet.setConfig(requestConfig);
System.out.println(getUrl);
CloseableHttpResponse getResponse = httpclient.execute(httpGet);
HttpEntity responseEntity = getResponse.getEntity();
BufferedReader bufferedReader=null;
System.out.println(getResponse.getStatusLine() );
if (responseEntity != null) {
try {
bufferedReader=new BufferedReader(new InputStreamReader(responseEntity.getContent(), "UTF-8"), 8*1024);
String line=null;
while ((line=bufferedReader.readLine())!=null) {
entityStringBuilder.append(line);
}
//利用从HttpEntity中得到的String生成JsonObject
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(entityStringBuilder.toString());
resultJsonObject= JSONObject.fromObject(entityStringBuilder.toString());
//JSONObject jsonObject = JSONObject.fromObject(paramContent);
System.out.println(resultJsonObject.getJSONObject("data").get("region"));
System.out.println(resultJsonObject.get("region"));
}
EntityUtils.consume(responseEntity);
}catch(Exception ex){
ex.printStackTrace();
}
System.out.println("处理IP地址");
}
public static void main(String[] args) {
scheduleTask();
//GetAddressByIp("47.90.33.254");
}
public static String GetAddressByIp(String IP){
String resout = "";
try{
String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip="+IP);
System.out.println(str);
JSONObject obj = JSONObject.fromObject(str);
JSONObject obj2 = (JSONObject) obj.get("data");
String code = (String) obj.get("code");
if(code.equals("0")){
resout = obj2.get("country")+"--" +obj2.get("area")+"--" +obj2.get("city")+"--" +obj2.get("isp");
}else{
resout = "IP地址有误";
}
}catch(Exception e){
e.printStackTrace();
resout = "获取IP地址异常:"+e.getMessage();
}
return resout;
}
public static String getJsonContent(String urlStr)
{
try
{// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}