zoukankan      html  css  js  c++  java
  • java http json

    package com.utils;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.List;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import org.json.JSONStringer;

    import android.content.Context;
    import android.telephony.NeighboringCellInfo;
    import android.telephony.TelephonyManager;

    public class Location {
        
    public static String LOCATIONS_URL = "http://www.google.com/loc/json";

        
    public static String getLocations(Context context) {
            
    // generate json request
            String jr = generateJsonRequest(context);

            
    try {
                DefaultHttpClient client 
    = new DefaultHttpClient();

                StringEntity entity 
    = new StringEntity(jr);

                HttpPost httpost 
    = new HttpPost(LOCATIONS_URL);
                httpost.setEntity(entity);

                HttpResponse response 
    = client.execute(httpost);

                String locationsJSONString 
    = getStringFromHttp(response.getEntity());
                
                
    return extractLocationsFromJsonString(locationsJSONString);
            } 
    catch (ClientProtocolException e) {

                
    //e.printStackTrace();
            } catch (IOException e) {
                
                
    //e.printStackTrace();
            } catch (Exception e) {
                
    //e.printStackTrace();
            }
            
    return null;

        }

        
    private static String extractLocationsFromJsonString(String jsonString) {
            String country 
    = "";
            String region 
    = "";
            String city 
    = "";
            String street 
    = "";
            String street_number 
    = "";
            
    double latitude = 0.0;
            
    double longitude = 0.0;
            
            
    //"accuracy":901.0
            double accuracy = 0.0;
            
            
    try {
                JSONObject jo 
    = new JSONObject(jsonString);
                JSONObject location 
    = (JSONObject) jo.get("location");
                latitude 
    = (Double) location.get("latitude");
                longitude 
    = (Double) location.get("longitude");
                accuracy 
    = (Double) location.get("accuracy");
                JSONObject address 
    = (JSONObject) location.get("address");

                country 
    = (String) address.get("country");
                region 
    = (String) address.get("region");
                city 
    = (String) address.get("city");
                street 
    = (String) address.get("street");
                street_number 
    = (String) address.get("street_number");
            } 
    catch (JSONException e) {

                
    //e.printStackTrace();
            }

            
    return "(" + latitude + "," + longitude + ") " + country + region + city
                    
    + street + street_number + " " + "精确度:" + accuracy;
        }

        
    // 获取所有的网页信息以String 返回
        private static String getStringFromHttp(HttpEntity entity) {

            StringBuffer buffer 
    = new StringBuffer();

            
    try {
                
    // 获取输入流
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        entity.getContent()));

                
    // 将返回的数据读到buffer中
                String temp = null;

                
    while ((temp = reader.readLine()) != null) {
                    buffer.append(temp);
                }
            } 
    catch (IllegalStateException e) {
                
                
    //e.printStackTrace();
            } catch (IOException e) {
                
    //e.printStackTrace();
            }
            
    return buffer.toString();
        }

        
    private static String generateJsonRequest(Context context) {
            TelephonyManager manager 
    = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            List
    <NeighboringCellInfo> cellList = manager.getNeighboringCellInfo();

            
    if (cellList.size() == 0)
                
    return null;

            JSONStringer js 
    = new JSONStringer();
            
    try {

                js.object();

                js.key(
    "version").value("1.1.0");
                js.key(
    "host").value("maps.google.com");
                js.key(
    "home_mobile_country_code").value(460);
                js.key(
    "home_mobile_network_code").value(0);
                js.key(
    "radio_type").value("gsm");
                js.key(
    "request_address").value(true);
                js.key(
    "address_language").value("zh_CN");

                JSONArray ct 
    = new JSONArray();

                
    for (NeighboringCellInfo info : cellList) {

                    JSONObject c 
    = new JSONObject();
                    c.put(
    "cell_id", info.getCid());
                    c.put(
    "location_area_code", info.getLac());
                    c.put(
    "mobile_country_code"460);
                    c.put(
    "mobile_network_code"0);
                    c.put(
    "signal_strength", info.getRssi()); // 获取邻居小区信号强度

                    ct.put(c);
                }
                js.key(
    "cell_towers").value(ct);
                js.endObject();
            } 
    catch (JSONException e) {
                
    //e.printStackTrace();
                return null;
            }

            
    return js.toString().replace("true""True");
        }
    }

  • 相关阅读:
    HTML5新增
    【目录】洛谷|CODEVS题解汇总
    【搜索】kkksc03考前临时抱佛脚
    【模拟】压缩技术
    【模拟】爱与愁的一千个伤心的理由
    【搜索】棋盘
    【模拟】图书管理员
    【递归】对称二叉树
    【题单】挖坑大行动
    【模拟】弹珠游戏
  • 原文地址:https://www.cnblogs.com/zghull/p/3335564.html
Copyright © 2011-2022 走看看