JAVA http请求接口数据
来源:互联网 发布:java replace的原理 编辑:程序博客网 时间:2024/06/06 09:04
本次以访问百度地图服务API 为例
编写访问程序
一、解析url 方法 把返回数据 封装成StringBuffer 字符串
public static StringBuffer httpsRequest(String requestUrl, String requestMethod, String output) throws IOException,UnsupportedEncodingException {URL url = new URL(requestUrl);
if (requestUrl.startsWith("https")) {HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestMethod(requestMethod);if (null != output) {OutputStream outputStream = connection.getOutputStream();outputStream.write(output.getBytes("UTF-8"));
outputStream.close();}// 从输入流读取返回内容
InputStream inputStream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {buffer.append(str.trim());}bufferedReader.close();inputStreamReader.close();inputStream.close();inputStream = null;
connection.disconnect();return buffer;
} else {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestMethod(requestMethod);if (null != output) {OutputStream outputStream = connection.getOutputStream();outputStream.write(output.getBytes("UTF-8"));
outputStream.close();}// 从输入流读取返回内容
InputStream inputStream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {buffer.append(str.trim());}bufferedReader.close();inputStreamReader.close();inputStream.close();inputStream = null;
connection.disconnect();return buffer;
}}
二、调用解析方法 处理接口返回数据
/**
* 地铁信息类
* @return*/public class StationInfo {
private String stationName;private String lng;private String lat;private String subway;public String getStationName() {
return stationName;}public void setStationName(String stationName) {
this.stationName = stationName;}public String getLng() {
return lng;}public void setLng(String lng) {
this.lng = lng;}public String getLat() {
return lat;}public void setLat(String lat) {
this.lat = lat;}public String getSubway() {
return subway;}public void setSubway(String subway) {
this.subway = subway;}
}
/**
* 根据经纬度,及其范围距离来获取地铁站点集合
* @param lng* @param lat* @param range* @return*/public List<StationInfo> getStationByLngLat(String lng, String lat, int range){int radius=range;//搜索的半径范围String url="http://api.map.baidu.com/place/v2/search?query=地铁站&page_size=10&page_num=0&scope=1&location="+lat+","+lng+"&radius="+radius+"&output=json&ak={百度服务API秘钥}";List<StationInfo> list=new ArrayList<StationInfo>();
try {
// System.out.println(HttpConnectionUtil.httpsRequest(url, "GET", null).toString());
JSONObject jsonObject= JSONObject.fromObject( HttpConnectionUtil.httpsRequest(url, "GET", null).toString());// System.out.println("我是:"+jsonObject.get("results"));
// System.out.println("我是2:"+jsonObject.get("total"));
JSONArray arrays=jsonObject.getJSONArray("results");if(arrays==null){//如果没有则返回空return null;}if(arrays.size()>0){for (int i=0;i<arrays.size();i++){StationInfo stationInfo=new StationInfo();
JSONObject jsonObject1=JSONObject.fromObject(arrays.getJSONObject(i));
stationInfo.setLat(jsonObject1.getJSONObject("location").get("lat").toString());stationInfo.setLat(jsonObject1.getJSONObject("location").get("lng").toString());stationInfo.setStationName(jsonObject1.get("name").toString());
String subwayStr=jsonObject1.get("address").toString();
String[] subways=subwayStr.split(";");
stationInfo.setSubway(subways[0]);
list.add(stationInfo);}
}} catch (IOException e) {
e.printStackTrace();}return list;
}
/**
* 调用方法查看结果
*/
public static void main(String[] args) throws Exception {String lat = "39.915";
String lng = "116.404";
Integer radius = 500; // 圆形区域大小
MapUtil mapUtil = new MapUtil();
List<StationInfo> list = mapUtil.getStationByLngLat(lng, lat, radius);for (StationInfo temp : list) {
System.out.println(temp.getStationName());
}}
0 0
- JAVA http请求接口数据
- JAVA 请求http接口返回json数据解析
- JAVA POST请求远程HTTP接口
- C#智能设备 Windows CE利用http请求调用Java接口查询数据
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http get/post请求、调用http接口、方法
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http请求,调用http接口与方法
- JAVA发送http get/post请求,调用http接口、方法
- post和get请求调用Http接口并拿到数据
- java http 请求之post json数据
- java http 请求之post json数据
- java 模拟http请求获取数据
- Java http post远程请求数据
- java发http,https请求获取数据
- iOS开发总结之代码规范
- JavaWeb三大框架(Hibernate+Struts2+Spring)
- 彻底理解ThreadLocal
- 如何用Python和PyInstaller编写Windows恶意代码
- libevent源码深度剖析十二
- JAVA http请求接口数据
- Ubuntu14.04安装Bugzilla
- Android 6.0以上因REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
- iOS 更加优雅便捷的UIAlertView/UIAlertController封装使用
- BZOJ 3527 [Zjoi2014] 力
- 过程设计的工具
- Source insight添加工具自动排版 20170307
- 模板类问题
- linux下编译opencv