如何通过android中的url获取数据

时间:2016-07-15 10:14:44

标签: android

我怀疑与网络服务和Json有关。实际上我有一个URL http://api.icndb.com/jokes/random,它与一些笑话网站有关。

如果您点击上面给出的网址,您就可以看到json数据。现在我的问题是我正在尝试做一个应用程序,即在我的活动中我有一个按钮和文本视图。

如果我们点击按钮,它应该从上面给出的网站上获取笑话,它应该以文本视图显示。每次如果我点击按钮,它应该显示不同的笑话。

是否可以帮助我使用上面提到的网址来获取数据。

2 个答案:

答案 0 :(得分:-1)

我把这里放在代码中。你需要使用AsyncTask。

 public static  String getJSONFromUrl(String url) {

    // make HTTP request
    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        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, "utf-8"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        Log.e("Log","Url1="+url);
        json = sb.toString();

    } catch (Exception e) {
        Log.e(TAG, "Error converting result " + e.toString());
    }

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

    // return JSON String
    return json;
}

获取Result后,解析它。

答案 1 :(得分:-1)

如果您的问题是如何检索数据,您应该看看这个解决方案: How to get JSON from URL in Javascript?

如果您在同一会话中调用相同的URL,它将缓存结果。

你只需在网址上添加一个虚假的参数,以强制不要对该请求进行操作。

例如,您可以将getTime添加到网址。

var d = new Date();
var n = d.getTime();
var url = "http://api.icndb.com/jokes/random?n=" + n;

例如: http://api.icndb.com/jokes/random?n=1468578025752 http://api.icndb.com/jokes/random?n=819929720000