当JsonObjectRequest不为null时,它会继续抛出空指针异常

时间:2016-11-22 22:21:19

标签: java android json google-places-api jsonobjectrequest

我目前正在尝试实现JsonObjectRequest。我正在寻找一个位置,并试图获取该地方的信息。但是,jsObjRequest(类型为JsonObjectRequest)存在问题 - 当我检查监视列表时,它会抛出空指针异常,即使它不为null。我很困惑为什么。这是代码:

private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final String API_KEY = "AIzaSyBlOhVQWuyQGwlAGZnDo81Aeg50UJbFrfw";

private static final String PLACES_SEARCH_URL =
        "https://maps.googleapis.com/maps/api/place/search/json?";
private static final String PLACES_TEXT_SEARCH_URL =
        "https://maps.googleapis.com/maps/api/place/search/json?";
private static final String PLACES_DETAILS_URL =
        "https://maps.googleapis.com/maps/api/place/details/json?";

private double _latitude;
private double _longitude;
private double _radius;

/**
 * Searching places
 * @param latitude - latitude of place
 * @params longitude - longitude of place
 * @param radius - radius of searchable area
 * //@param types - type of place to search
 * @return list of places
 * */
public PlacesList search(double latitude, double longitude, double radius/*, String types*/)
        throws Exception {

    String url = PLACES_SEARCH_URL + "key=" + API_KEY + "&location=" + latitude + "," + longitude + "&radius=" + radius;
    System.out.println(url);
    JsonObjectRequest jsObjRequest = new JsonObjectRequest
            (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        Log.d("SEARCH", "Part 1");
                        VolleyLog.v("Response:%n %s", response.toString(4));
                    } catch (JSONException e) {
                        Log.d("SEARCH", "Part 2 - Exception called");
                        e.printStackTrace();
                    }
                    catch (Exception e)
                    {
                        System.out.println("Exception caught in JsonObjectRequest");
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("SEARCH", "Part 3");
                    VolleyLog.e("Error: ", error.getMessage());
                }
            });
    ApplicationController.getInstance().addToRequestQueue(jsObjRequest);
    return new PlacesList();
}

它抛出包含以下内容的行: ApplicationController.getInstance()。addToRequestQueue(jsObjRequest);

以下代码块是我们捕获异常的地方:

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
        // Called when a new location is found by the network location provider.
        Double lat = location.getLatitude();
        Double lon = location.getLongitude();
        PlacesList myPlaces = new PlacesList();
        try {
            myPlaces = finder.search(lat, lon, 10);
        } catch (Exception e) {
            System.out.println("Could not find place. Exception in search.");
        }
        if (myPlaces.getMostLikelyPlace() != null) {
            if (myPlaces.getMostLikelyPlace().getId() != null) {
                Log.d("PLACEID", myPlaces.getMostLikelyPlace().getId());
                System.out.println(myPlaces.getMostLikelyPlace().getId());
            }
        }
    }

我们捕获的错误如下:

I / System.out:https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyBlOhVQWuyQGwlAGZnDo81Aeg50UJbFrfw&location=43.816,-111.78199833333335&radius=10.0

I / System.out:找不到地方。搜索中的例外情况。

以下是文档中有关JsonObjectRequest的内容:https://developer.android.com/training/volley/request.html#request-json

我觉得我正在完全遵循文档上的说明。有什么理由说它为什么会抛出这行代码?

1 个答案:

答案 0 :(得分:0)

尝试使用此设置进行排球..

http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

项目的排球设置可能出现了问题..我一直都在这里..