Trying obtain JSON data from XAMPP server running on my laptop,this is just a test application no important data on it,i Have a main activity,an HttpManager
class that am using to obtain the data,a UserdataJson
am using to parse the data,I have a UserData
POJO, code Below.
MainActivity:
public class MainActivity extends AppCompatActivity {
TextView output;
ProgressBar pb;
Button btn;
List<UserData> userDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output=(TextView) findViewById(R.id.textView);
output.setMovementMethod(new ScrollingMovementMethod());
pb= (ProgressBar) findViewById(R.id.progressBar);
pb.setVisibility(View.INVISIBLE);
btn= (Button) findViewById(R.id.button);
onClicked();
}
public void onClicked(){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isOnline()) {
requestData("http://10.0.0.2/database/getInfoDroid.php");
} else {
Toast.makeText(MainActivity.this, "Network Unavailable", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
}
return super.onOptionsItemSelected(item);
}
private void requestData(String uri) {
MyTask task=new MyTask();
task.execute(uri);
}
protected void updateDisplay(){
if (userDataList!=null)
{
for (UserData userdata:userDataList
) {
output.append(userdata.getName() + "\n");
}
}
}
protected boolean isOnline(){
ConnectivityManager cm= (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo netinfo= cm.getActiveNetworkInfo();
if(netinfo!= null && netinfo.isConnectedOrConnecting()){
return true;
}
else {
return false;
}
}
private class MyTask extends AsyncTask {
@Override
protected void onPreExecute() {
// updateDisplay("Background Task Started");
pb.setVisibility(View.VISIBLE);
}
@Override
protected Object doInBackground(Object[] objects) {
String content =HttpManager.getData(objects[0].toString());
return content;
}
@Override
protected void onPostExecute(Object o) {
userDataList= UserDataJsonParser.parseFeed(o.toString());
updateDisplay();
pb.setVisibility(View.INVISIBLE);
}
@Override
protected void onProgressUpdate(Object[] values) {
//updateDisplay(values[0].toString());
}
}
}
HttpManager:
public class HttpManager {
public static String getData(String uri){
StringBuilder sb=new StringBuilder();
BufferedReader reader=null;
try {
URL url=new URL(uri);
HttpURLConnection con= (HttpURLConnection) url.openConnection();
reader=new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line=reader.readLine())!=null){
sb.append(line+ "\n");
}
return sb.toString();
}
catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
}
JsonParser class:
public class UserDataJsonParser {
public static List<UserData> parseFeed(String content){
System.out.println(content);
try {
JSONArray array = new JSONArray(content);
List<UserData> dataList= new ArrayList<>();
JSONObject obj=null;
for (int i=0;i<array.length();i++) {
obj = array.getJSONObject(i);
UserData userData = new UserData();
userData.setId(obj.getInt("id"));
userData.setName(obj.getString("name"));
userData.setSurname(obj.getString("surname"));
userData.setUsername(obj.getString("username"));
userData.setPassword(obj.getString("password"));
dataList.add(userData);
}
return dataList;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
}
JSon data am trying to parse:
[{"id":"1","name":"Hilary","surname":"Mwape","username":"Hilz","password":"milan"},{"id":"2","name":"John","surname":"Kalyondo","username":"jk","password":"jk92"},{"id":"3","name":"Sipiwe","surname":"Tembo","username":"ST","password":"ST91"}]
LOGCAT:
java.net.ConnectException: failed to connect to /10.0.0.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.Socket.connect(Socket.java:884)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.Connection.connect(Connection.java:152)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at hilz.myapplication.HttpManager.getData(HttpManager.java:22)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at hilz.myapplication.MainActivity$MyTask.doInBackground(MainActivity.java:122)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.lang.Thread.run(Thread.java:818)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.Posix.connect(Native Method)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122)
10-05 17:19:38.773 12022-14516/hilz.myapplication W/System.err: ... 23 more
10-05 17:19:38.810 12022-12022/hilz.myapplication W/System.err: org.json.JSONException: End of input at character 0 of
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:97)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONArray.<init>(JSONArray.java:92)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONArray.<init>(JSONArray.java:108)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at hilz.myapplication.UserDataJsonParser.parseFeed(UserDataJsonParser.java:15)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at hilz.myapplication.MainActivity$MyTask.onPostExecute(MainActivity.java:133)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:651)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask.-wrap1(AsyncTask.java)
10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.os.Looper.loop(Looper.java:148)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at java.lang.reflect.Method.invoke(Native Method)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
10-05 19:04:43.849 12022-12030/? I/art: Ignoring second debugger -- accepting and dropping