URL +io 进行使用 -后台使用现有接口进行调用。

package com.system.tool;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class getLongAndLat {

/**
 * 来自百度进行代码重构:
 */
private static final String BAIDU_APP_KEY = "42b8ececa9cd6fe72ae4cddd77c0da5d";

public static Map<String, String> getLatitude(String address) {
    try {
        // 将地址转换成utf-8的16进制
        address = URLEncoder.encode(address, "UTF-8");
        // 如果有代理,要设置代理,没代理可注释
        // System.setProperty("http.proxyHost","192.168.172.23");
        // System.setProperty("http.proxyPort","3209");

        URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?address="
                + address + "&output=json&ak="+ BAIDU_APP_KEY);

        BufferedReader in = new BufferedReader(new InputStreamReader(
        resjson.openStream()));
        String res= "";
        StringBuilder sb = new StringBuilder("");
        while ((res=in.readLine())!= null) {
                sb.append(res);
        }
        in.close();
        String str = sb.toString();
        System.out.println("return json:" + str);//json是空的json
        if(str!=null&&!str.equals("")){
            Map<String, String> map = null;
            int lngStart = str.indexOf("lng\":");
            int lngEnd = str.indexOf(",\"lat");
            int latEnd = str.indexOf("},\"precise");
            if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
                String lng = str.substring(lngStart + 5, lngEnd);

                String lat = str.substring(lngEnd + 7, latEnd);
                map = new HashMap<String, String>();
                map.put("lng", lng);
                map.put("lat", lat);
                return map;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

}

注意字节流的问题:
ReadBuffer 只能使用读取一次;建议在重新了解一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值