[Java] 纯文本查看 复制代码
/**
* 发送http请求
* @param url
* @param content
* @return
*/
public static Map<String, Object> request(String url, String content) {
Map<String, Object> result = new HashMap<String, Object>();
String errorStr = "";
String status = "";
String response = "";
PrintWriter out = null;
BufferedReader in = null;
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;
// 设置请求属性
httpUrlConnection.setRequestProperty("Content-Type", "application/json");
httpUrlConnection.setRequestProperty("x-adviewrtb-version", "2.1");
// 发送POST请求必须设置如下两行
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(httpUrlConnection.getOutputStream());
// 发送请求参数
out.write(content);
// flush输出流的缓冲
out.flush();
httpUrlConnection.connect();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
response += line;
}
status = new Integer(httpUrlConnection.getResponseCode()).toString();
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
errorStr = e.getMessage();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) { out.close();}
if (in != null) {in.close();}
} catch (Exception ex) {
ex.printStackTrace();
}
}
result.put("errorStr", errorStr);
result.put("response", response);
result.put("status", status);
return result;
}
/**
* 通过接口获取IP地址
* @param ip
* @return
*/
public static String getLocationByIP(String ip){
String taobao_server = "http://ip.taobao.com/service/getIpInfo.php?ip="+ip;
Map<String, Object> objectMap = request(taobao_server, "");
// 转换为json对象
String status = objectMap.get("status").toString();
if (status.equals("200")) {
Object data = objectMap.get("response");
JSONObject jsonObject = JSONObject.fromObject(JSONObject.fromObject(data).getString("data"));
String country = jsonObject.get("country").toString();
String region = jsonObject.get("region").toString();
String city = jsonObject.get("city").toString();
String isp = jsonObject.get("isp").toString();
String address = country + region+ city + isp;
return address;
} else {
return "未知地址";
}
}