前不久在做关于百度地图定位的东西,后来意识要求后台服务层去接口调用获取百度地图定位的相干新闻,于是就百度了须臾间网上的接口工具类发现,有很三种艺术完结,可是都写的过于臃肿,而且封装的不是很完整,有基于java.net包下的JSON对象,也有依照apache包下的httpClient请求工具类,和java.net包下的URLConnection类完毕http请求,作者感到过于复杂和倒退,于是就本人入手封装了一晃,望对我们有所辅助。

package com.zhaiugo.common.utils.baidumap;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;

import com.alibaba.fastjson.JSONObject;

/**
* 百度地图服务器端工具类
* @author zhaieryuan
* @date 2017年12月20日 上午9:57:24
*/
public class MapUtils {

private static String url = “http://api.map.baidu.com/geocoder/v2/“;

/**
* 带ur参数
* @param url
* @param param
* @return
* @throws IOException
* @throws HttpException
* @author zhaieryuan
* @date 2017年12月20日 下午12:41:00
*/
public static JSONObject httpGet(String url,Map<String, Object>
param) throws IOException, HttpException {
JSONObject result = new JSONObject();
String urlParam=””;
HttpClient httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(“api.map.baidu.com”, 80,
“http”);
for(Map.Entry<String, Object> item : param.entrySet()){
urlParam +=
item.getKey()+”=”+URLEncoder.encode(item.getValue().toString(),”UTF-8″)+”&”;
}
url=url+”?”+urlParam;
GetMethod getMethod = new GetMethod(url);
getMethod.setRequestHeader(“Content-Type”,
“application/x-www-form-urlencoded;charset=utf-8”);
getMethod.getParams().setContentCharset(“utf-8”);
httpClient.executeMethod(getMethod);
String respStr = getMethod.getResponseBodyAsString();
JSONObject mapData = JSONObject.parseObject(respStr);
result.put(“locationDetails”, mapData.getJSONObject(“result”));
result.put(“mapData”, mapData.getJSONObject(“result”));
result.put(“lng”,
mapData.getJSONObject(“result”).getJSONObject(“location”).get(“lng”));
result.put(“lat”,
mapData.getJSONObject(“result”).getJSONObject(“location”).get(“lat”));
return result;
}

/**
* 不带ur参数
* @param param
* @return
* @throws IOException
* @throws HttpException
* @author zhaieryuan
* @date 2017年12月20日 下午12:40:51
*/
public static JSONObject httpGet(Map<String, Object> param) throws
IOException, HttpException {
JSONObject result = new JSONObject();
String urlParam=””;
HttpClient httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(“api.map.baidu.com”, 80,
“http”);
for(Map.Entry<String, Object> item : param.entrySet()){
urlParam +=
item.getKey()+”=”+URLEncoder.encode(item.getValue().toString(),”UTF-8″)+”&”;
}
url=url+”?”+urlParam;
GetMethod getMethod = new GetMethod(url);
getMethod.setRequestHeader(“Content-Type”,
“application/x-www-form-urlencoded;charset=utf-8”);
getMethod.getParams().setContentCharset(“utf-8”);
httpClient.executeMethod(getMethod);
String respStr = getMethod.getResponseBodyAsString();
JSONObject mapData = JSONObject.parseObject(respStr);
result.put(“locationDetails”, mapData.getJSONObject(“result”));
result.put(“mapData”, mapData.getJSONObject(“result”));
result.put(“lng”,
mapData.getJSONObject(“result”).getJSONObject(“location”).get(“lng”));
result.put(“lat”,
mapData.getJSONObject(“result”).getJSONObject(“location”).get(“lat”));
return result;
}

/**
* demon
* @param args
* @throws Exception
* @author zhaieryuan
* @date 2017年12月20日 下午12:38:01
*/
public static void main(String[] args) throws Exception{
Map<String, Object> param = new HashMap<String, Object>();
param.put(“ak”, “STai60SY2FKuIWcK7o4TgtsgGtBFcBVP”);
param.put(“output”, “json”);
param.put(“address”, “南通市孵鹰大厦-公交车站”);
try {
JSONObject data = httpGet(“http://api.map.baidu.com/geocoder/v2/“,
param);
//SONObject data = httpGet(“http://api.map.baidu.com/geocoder/v2/“,
param);
System.out.println(data.get(“lng”)+”-“+data.get(“lat”));
} catch (IOException e) {
e.printStackTrace();
System.out.println(“未找到相匹配的中纬度!”);
}
}
}

 

实施结果json 1

相关文章

网站地图xml地图