1

我是 Android 的新手,所以关于 android 的知识不是很广。

我正在尝试在 android 中实现 Json 调用,我正在使用愚蠢的代码来获取数据库中所有联系人的列表。

package com.example.library;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class SecondActivity extends Activity {



    Button show_data;
    JSONObject my_json_obj;
    String path,firstname,lastname;
    {
    path = "http://192.168.71.129:3000/contacts";
        HttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
        HttpEntity  entity;
        HttpResponse response = null;
        HttpURLConnection urlconn;
        my_json_obj = new JSONObject();

    }
}

我不知道这是否是正确的方法,但这段代码已经存在于另一个项目中,我刚刚做了一些改变。

请指导我完成这个,因为我已经经历了许多 stackoverflow 和谷歌的答案,但这很令人困惑,因为我只是一个初学者并且不了解 android 中的 json 调用。

4

2 回答 2

3

我可以给你一段代码并说“嘿试试这个”,但就像你说你对 Android 很陌生,所以我根本不会。我认为更有价值的是,您可以通过尝试然后简单地复制粘贴代码来学习更好的东西(大部分时间)

在进行网络请求和解析数据时,需要考虑几件事。

网络请求您必须始终在单独的线程中执行此操作,然后在 UI 线程中执行此操作,因为如果我不正确,您将得到NetworkOnMainUiThreadException

这同样适用于解析您从请求中检索到的数据。我在您当前的代码中没有看到任何数据解析,但我只是想给您一个提示,因为您可能会在您的应用程序中的某个时候这样做。

在这里您可以找到如何使用 AsyncTask 进行线程化的教程。这是在 Android 中应该如何完成的“方式”,它们真的让你很容易。

阅读该教程时,您将获得在本课程中做事的基本知识。

当您了解线程的概念以及如何使用这项新添加的技能时,我建议您在此处阅读并跟进此json教程。

我希望这有帮助

于 2013-04-26T12:57:41.187 回答
0

试试这个,结果变量有你的回应

try {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet("paset_your_url_here");
        HttpResponse response = client.execute(request);  

        BufferedReader in = new BufferedReader
        (new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {

            sb.append(line + NL);
        }

        in.close();
          result = sb.toString();
          Log.i("", "-----------------------"+result);


    } catch(Exception e) {
        e.printStackTrace();
    }finally {
        if (in != null) {
            try {
                in.close();
                } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

如果你想赞美 json,那么首先做谷歌搜索,如果你通过这个得到你的答案,然后投票:)

于 2013-04-26T12:51:47.983 回答