从url检索json数组给出错误的android?

时间:2012-11-08 19:30:01

标签: android json

我想从这个json url中检索数据但是会出错。我放在最后我有另一个json与这个代码工作完美,但在这里这是不工作所以问题是什么,如何解决?

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurant&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json

  

JsonParserSearch.java

 public class JsonParserSearch 
 {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JsonParserSearch() {

}

public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();          

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser finaal", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

}

  

SearchListActivity.java

公共类SearchlistActivity扩展了Activity {

private static String url="http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurant&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json";
private static final String TAG_RESULTS = "results";
private static final String TAG_RESPONSEDATA="responseData";    

@Override
public void onCreate(Bundle savedInstanceState)

{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    //JSONArray results = null;       
     JSONArray responseData=null;
 // Hashmap for ListView
    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

    // Creating JSON Parser instance
    JsonParserSearch jParser = new JsonParserSearch();


    // getting JSON string from URL
    JSONObject json = jParser.getJSONFromUrl(url);

    try {
        // Getting Array of Contacts

         responseData = json.getJSONArray(TAG_RESPONSEDATA);
         Log.e("jsonnn data","sfsssss00000-------->"+responseData);

        }
    catch (JSONException e) {
        e.printStackTrace();
    }

}

}

11-09 01:18:14.241: E/Buffer Error(275): Error converting result java.lang.NullPointerException
11-09 01:18:14.241: E/JSON Parser finaal(275): Error parsing data org.json.JSONException: End of input at character 0 of 
11-09 01:18:14.251: D/AndroidRuntime(275): Shutting down VM
11-09 01:18:14.251: W/dalvikvm(275): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-09 01:18:14.261: E/AndroidRuntime(275): FATAL EXCEPTION: main
11-09 01:18:14.261: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ssss/com.example.ssss.SearchlistActivity}: java.lang.NullPointerException
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.os.Looper.loop(Looper.java:123)
11-09 01:18:14.261: E/AndroidRuntime(275):  at android.app.ActivityThread.main(ActivityThread.java:4627)
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
11-09 00:45:17.072: W/System.err(302):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-09 00:45:17.072: W/System.err(302):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-09 00:45:17.072: W/System.err(302):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-09 00:45:17.072: W/System.err(302):  at com.example.sss.JsonParserSearch.getJSONFromUrl(JsonParserSearch.java:38)
11-09 00:45:17.072: W/System.err(302):  at com.example.sss.SearchlistActivity.onCreate(SearchlistActivity.java:39)
11-09 00:45:17.072: W/System.err(302):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-09 00:45:17.082: W/System.err(302):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-09 00:45:17.082: W/System.err(302):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-09 00:45:17.082: W/System.err(302):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-09 00:45:17.082: W/System.err(302):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-09 00:45:17.082: W/System.err(302):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 00:45:17.082: W/System.err(302):  at android.os.Looper.loop(Looper.java:123)
11-09 00:45:17.082: W/System.err(302):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-09 00:45:17.082: W/System.err(302):  at java.lang.reflect.Method.invokeNative(Native Method)
11-09 00:45:17.082: W/System.err(302):  at java.lang.reflect.Method.invoke(Method.java:521)
11-09 00:45:17.092: W/System.err(302):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-09 00:45:17.092: W/System.err(302):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-09 00:45:17.092: W/System.err(302):  at dalvik.system.NativeStart.main(Native Method)
11-09 00:45:17.092: E/Buffer Error(302): Error converting result java.lang.NullPointerException
11-09 00:45:17.092: E/JSON Parser finaal(302): Error parsing data org.json.JSONException: End of input at character 0 of 
11-09 00:45:17.103: D/AndroidRuntime(302): Shutting down VM
11-09 00:45:17.103: W/dalvikvm(302): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-09 00:45:17.112: E/AndroidRuntime(302): FATAL EXCEPTION: main
11-09 00:45:17.112: E/AndroidRuntime(302): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sss/com.example.sss.SearchlistActivity}: java.lang.NullPointerException
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.os.Looper.loop(Looper.java:123)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-09 00:45:17.112: E/AndroidRuntime(302):  at java.lang.reflect.Method.invokeNative(Native Method)
11-09 00:45:17.112: E/AndroidRuntime(302):  at java.lang.reflect.Method.invoke(Method.java:521)
11-09 00:45:17.112: E/AndroidRuntime(302):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-09 00:45:17.112: E/AndroidRuntime(302):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-09 00:45:17.112: E/AndroidRuntime(302):  at dalvik.system.NativeStart.main(Native Method)
11-09 00:45:17.112: E/AndroidRuntime(302): Caused by: java.lang.NullPointerException
11-09 00:45:17.112: E/AndroidRuntime(302):  at com.example.sss.SearchlistActivity.onCreate(SearchlistActivity.java:44)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-09 00:45:17.112: E/AndroidRuntime(302):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-09 00:45:17.112: E/AndroidRuntime(302):  ... 11 more

1 个答案:

答案 0 :(得分:0)

您的手机/模拟器似乎无法解析ajax.googleapis.com的主机名。 (java.net.UnknownHostException)。我建议您检查手机/模拟器与互联网的连接情况(例如:将上述网址放入手机浏览器窗口并检查其是否有效)。