我在從我的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