1 package com.htpt.superviseServices.dm.util;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.io.PrintWriter;
7 import java.net.URL;
8 import java.net.URLConnection;
9 import java.util.List;
10 import java.util.Map;
11
12 import net.sf.json.JSONArray;
13
14 public class HttpRequest {
15 /**
16 * 向指定URL发送GET方法的请求
17 *
18 * @param url
19 * 发送请求的URL
20 * @param param
21 * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
22 * @return URL 所代表远程资源的响应结果
23 */
24 public static Boolean sendGet(String lon, String lat) {
25 String result = "";
26 BufferedReader in = null;
27 String city = "";
28 try {
29 String urlNameString = "http://api.map.baidu.com/geocoder/v2/?ak=56E117E2740978010ece5593e91b00e3&output=json&coordtype=wgs84ll&location="+lat+","+lon;
30 URL realUrl = new URL(urlNameString);
31 // 打开和URL之间的连接
32 URLConnection connection = realUrl.openConnection();
33 // 设置通用的请求属性
34 connection.setRequestProperty("accept", "*/*");
35 connection.setRequestProperty("connection", "Keep-Alive");
36 connection.setRequestProperty("user-agent",
37 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
38 // 建立实际的连接
39 connection.connect();
40 // 获取所有响应头字段
41 Map<String, List<String>> map = connection.getHeaderFields();
42 // 遍历所有的响应头字段
43 for (String key : map.keySet()) {
44 System.out.println(key + "--->" + map.get(key));
45 }
46 // 定义 BufferedReader输入流来读取URL的响应
47 in = new BufferedReader(new InputStreamReader(
48 connection.getInputStream()));
49 String line;
50 while ((line = in.readLine()) != null) {
51 result += line;
52 }
53 JSONArray data = JSONArray.fromObject("["+result+"]");
54 Map dataMap = (Map) data.get(0);
55 Map dataResult = (Map)dataMap.get("result");
56 Map addressComponent = (Map)dataResult.get("addressComponent");
57 city = (String) addressComponent.get("city");
58 } catch (Exception e) {
59 System.out.println("发送GET请求出现异常!" + e);
60 e.printStackTrace();
61 }
62 // 使用finally块来关闭输入流
63 finally {
64 try {
65 if (in != null) {
66 in.close();
67 }
68 } catch (Exception e2) {
69 e2.printStackTrace();
70 }
71 }
72 System.out.println(city);
73 return "长沙市".equals(city);
74 }
75
76 /**
77 * 向指定 URL 发送POST方法的请求
78 *
79 * @param url
80 * 发送请求的 URL
81 * @param param
82 * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
83 * @return 所代表远程资源的响应结果
84 */
85 public static String sendPost(String url, String param) {
86 PrintWriter out = null;
87 BufferedReader in = null;
88 String result = "";
89 try {
90 URL realUrl = new URL(url);
91 // 打开和URL之间的连接
92 URLConnection conn = realUrl.openConnection();
93 // 设置通用的请求属性
94 conn.setRequestProperty("accept", "*/*");
95 conn.setRequestProperty("connection", "Keep-Alive");
96 conn.setRequestProperty("user-agent",
97 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
98 // 发送POST请求必须设置如下两行
99 conn.setDoOutput(true);
100 conn.setDoInput(true);
101 // 获取URLConnection对象对应的输出流
102 out = new PrintWriter(conn.getOutputStream());
103 // 发送请求参数
104 out.print(param);
105 // flush输出流的缓冲
106 out.flush();
107 // 定义BufferedReader输入流来读取URL的响应
108 in = new BufferedReader(
109 new InputStreamReader(conn.getInputStream()));
110 String line;
111 while ((line = in.readLine()) != null) {
112 result += line;
113 }
114 } catch (Exception e) {
115 System.out.println("发送 POST 请求出现异常!"+e);
116 e.printStackTrace();
117 }
118 //使用finally块来关闭输出流、输入流
119 finally{
120 try{
121 if(out!=null){
122 out.close();
123 }
124 if(in!=null){
125 in.close();
126 }
127 }
128 catch(IOException ex){
129 ex.printStackTrace();
130 }
131 }
132 return result;
133 }
134 }