我是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调用。
答案 0 :(得分:3)
我可以给你一大堆代码然后说“嘿试试这个”,但就像你说你是Android新手所以我根本不会。 我认为通过尝试然后简单地复制粘贴代码(大部分时间),您可以学到更多的价值
当您进行网络请求和解析数据时,您需要考虑几件事情。
网络请求你必须始终在一个单独的线程中然后在UI线程中执行此操作,因为如果你没有得到 NetworkOnMainUiThreadException ,如果我是正确的话。
这同样适用于解析从请求中检索到的数据。 我没有在你当前的代码中看到任何数据解析,但我只是想给你一个单挑,因为你会在你的应用程序中的某个时候做这个。
Here您可以找到如何使用AsyncTask进行线程化的教程。这是在Android中应该如何做的“方式”,他们真的很容易让你。
阅读该教程时,您将获得基本知识,可以在本课程中学习。
当你获得线程的概念以及如何使用这个新添加的技能时,我建议阅读并跟进这个 json 教程here。
我希望这会有所帮助
答案 1 :(得分: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然后先用谷歌搜索,如果你得到你的答案然后投票:)