gpt4 book ai didi

java - Android 使用 JSON 检索 SQL 查询的困难

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:13 25 4
gpt4 key购买 nike

我在从 xampp sql 服务器检索坐标时遇到一些问题。当我在手机上输入 URL (http://192.168.1.100/cwdb/get_all_coordinates.php) 时,我会得到以下 JSON 坐标列表:

{"coordinates":[{"cid":"1","latitude":"36.544670","longitude":"36.544651"},{"cid":"2","latitude":"36.544270","longitude":"15.524650"},{"cid":"3","latitude":"37.544270","longitude":"16.524651"},{"cid":"4","latitude":"27.544270","longitude":"76.524651"},{"cid":"5","latitude":"27.523569","longitude":"31.146650"}],"success":1}

但是,当我尝试通过 Android 应用程序检索此内容时,我在下载 JSON 字符串时遇到了问题。这是出现问题的代码。 System.out.println("LINE:"+line); 正在打印“LINE:null”

我已将互联网权限包含在我的 list 文件中。这是我的代码

private class JSONCoordinates extends AsyncTask<String, Void, ArrayList<Coordinate>> {

@Override
protected ArrayList<Coordinate> doInBackground(String... params) {
String line = null;
ArrayList<Coordinate> cList = new ArrayList<Coordinate>();
//String data = ( (new WeatherHttpClient()).getWeatherData());
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(BASE_URL);
HttpResponse response = httpClient.execute(httpGet, localContext);
String result = "";

BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent()
)
);

//String line = null;
while ((line = reader.readLine()) != null){
result += line + "\n";
}
System.out.println("LINE:"+line);
}
catch(Throwable t) {
t.printStackTrace();
}
try {
cList = JSONParser.getCoordinate(line);
} catch (JSONException e) {
e.printStackTrace();
}
return cList;
}




FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
at org.json.JSONTokener.nextValue(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:154)
at org.json.JSONObject.<init>(JSONObject.java:171)
at com.example.citywalks.JSONParser.getCoordinate(JSONParser.java:17)
at com.example.citywalks.MainActivity$JSONCoordinates.doInBackground(MainActivity.java:78)
at com.example.citywalks.MainActivity$JSONCoordinates.doInBackground(MainActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/AndroidRuntime(29017): ... 5 more

最佳答案

line 为 null...因为只有当它变为 null 时,while 循环才会终止。您应该打印结果变量。

关于java - Android 使用 JSON 检索 SQL 查询的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com