Java从URL获取Android TextView中的JSON
我想从Android Studio的文本视图中显示的php获取JSON响应。我现在有了这样的代码,但它不起作用。据我所知,当应用程序打开时,它甚至没有运行
public class MainActivity extends Activity {
private SQLiteHandler db;
private SessionManager session;
private String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public void main(String[] args) throws IOException, JSONException {
TextView txtUser = (TextView) findViewById(R.id.user);
JSONObject json = readJsonFromUrl("http://piggybank.wordmediavormgever.nl/getSaldo.php");
System.out.println(json.toString());
System.out.println(json.getString("saldo"));
try {
JSONObject jsonObject = new JSONObject();
String response = jsonObject.getString("saldo");
txtUser.setText(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
有人能看出我做错了什么吗?来自url的响应是
{"saldo":783}
# 1 楼答案
我认为问题出在try块的main函数中
您的jsonObject为空,您应该调用
还有一件事,当您进行一些网络呼叫时,您应该在后台线程中进行,而不是在UI线程中。(应在后台线程中调用readJsonFromUrl方法)
作为Nguyễn Trung你好ếu的回答建议
# 2 楼答案
试试看
除去
和使用
您必须在异步任务中调用它。完成代码