我在从我的xampp sql server检索坐标时遇到了一些麻烦。当我在我的手机上的URL(http://192.168.1.100/cwdb/get_all_coordinates.php
)型,我得到JSON的这个坐标列表:来自Android的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字符串的问题。
我已经在我的清单文件中包含了Internet权限。这是我的代码,它调用http连接类。 system.out.print打印出“DATAnull”
private class JSONCoordinateTask extends AsyncTask<String, Void, ArrayList<Coordinate>> {
@Override
protected ArrayList<Coordinate> doInBackground(String... params) {
ArrayList<Coordinate> cList = new ArrayList<Coordinate>();
String data = (new CoordinateHttpClient()).getCoordinateData();
System.out.println("DATA"+data);
try {
cList = JSONParser.getCoordinate(data);
} catch (JSONException e) {
e.printStackTrace();
}
return cList;
}
这里是http客户端类。这里打印的系统根本不打印出来。所以我的猜测是,它由于某种原因完全不能执行?
public class CoordinateHttpClient {
private static String BASE_URL = "http://192.168.1.100/cwdb/get_all_coordinates.php";
public String getCoordinateData() {
try {
URL oracle = new URL(BASE_URL);
BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
System.out.println("This doesn't print out");
StringBuffer buffer = new StringBuffer();
String line = null;
while ( (line = in.readLine()) != null)
buffer.append(line + "\r\n");
in.close();
return buffer.toString();
}
catch(Throwable t) {
t.printStackTrace();
}
return null;
}
}
任何帮助都会很好。
编辑:logcat的
02-23 15:35:47.105: E/TAG(29364): Error
java.net.ConnectException: failed to connect to /192.168.1.100 (port 80): connect failed: ENETUNREACH (Network is unreachable)
at libcore.io.IoBridge.connect(IoBridge.java:114)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
at java.net.Socket.connect(Socket.java:842)
at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
at java.net.URL.openStream(URL.java:462)
at com.example.citywalks.CoordinateHttpClient.getCoordinateData(CoordinateHttpClient.java:17)
at com.example.citywalks.MainActivity$JSONCoordinateTask.doInBackground(MainActivity.java:43)
at com.example.citywalks.MainActivity$JSONCoordinateTask.doInBackground(MainActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
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: libcore.io.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
at libcore.io.Posix.connect(Native Method)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
at libcore.io.IoBridge.connect(IoBridge.java:112)
02-23 15:35:47.105: E/TAG(29364): ... 25 more
问题出在CoordinateHttpClient类中。我将返回null更改为返回“aaa”,并返回该值。所以它只是不执行try语句。 – user2993328
只是要确认这是我在我的清单中: <使用权限android:name =“android.permission.ACCESS_NETWORK_STATE”/> <使用权限android:name =“android.permission.INTERNET”/> – user2993328
你的问题是在下载文件。尝试将't.printStackTrace();'更改为'Log.e(“TAG”,“Error”,t);'将异常写入logcat。 – PaF