2015-09-11 3 views
-3

Я попытался запросить URI и проанализировать его ответ многими способами. Но я не знаю, в чем проблема с моим кодом ниже.Parsing json from url in android:

String url = "http://10.0.2.2/ipf/conx.php"; 

    // Get HttpResponse Object from url. 
    // Get HttpEntity from Http Response Object 
    Log.v("Log1", "msg1"); 
    HttpClient httpclient = new DefaultHttpClient(); 

    HttpPost method = new HttpPost(url); 
    Log.v("Log1", "msg2"); 
    HttpResponse response = httpclient.execute(method); 
    HttpEntity entity = response.getEntity(); 
    if (entity != null) { 
     Log.v("Log2", "msg1"); 
    } else { 
     Log.v("log2", "msg2"); 
    } 

Когда я следую мой LogCat печати, я могу видеть только: LOG1 (msg1 и 2)

Пожалуйста некоторую помощь благодаря

ответ

0

Он принимает некоторое время (в зависимости от вашей скорости интернета) чтобы получить ответ с сервера ....! Или вы можете использовать ниже класс, чтобы проверить, когда ответ пришел,

private class xyz extends AsyncTask<Void, Void, Void> { 
    private ProgressDialog dialog ; 
    private Activity mActivity; 
    public xyz(Activity activity) 
    { 
     this.mActivity = activity; 
    } 

    protected void onPreExecute() { 
     this.dialog = new ProgressDialog(mActivity); 
     this.dialog.setMessage("Please Wait..."); 
     this.dialog.show(); 
     //code which load at prefix time 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 

      // make code which you want in background 
String url = "http://10.0.2.2/ipf/conx.php"; 

    // Get HttpResponse Object from url. 
    // Get HttpEntity from Http Response Object 
    Log.v("Log1", "msg1"); 
    HttpClient httpclient = new DefaultHttpClient(); 

    HttpPost method = new HttpPost(url); 
    Log.v("Log1", "msg2"); 
    HttpResponse response = httpclient.execute(method); 
    HttpEntity entity = response.getEntity(); 
    if (entity != null) { 
     Log.v("Log2", "msg1"); 
    } else { 
     Log.v("log2", "msg2"); 
    } 
     return null; 
    } 

    protected void onPostExecute(final Void unused) { 
     if (this.dialog.isShowing()) { 
      this.dialog.dismiss(); 

     } 

    } 
} 

Используйте это это в классе деятельности, как это,

new xyz(ActivityClassName.this).execute(); 
0

Существует возможность 2-х вопросов здесь.

1- проверьте, если вы добавили правильные сетевые разрешения в ваш файл AndroidManifest.xml.

2- ваш код выполняет сетевой запрос непосредственно в основной теме, которую Android не разрешает. Вы должны выполнить это в рабочем потоке, например. использование AsyncTask

Будет намного лучше, если вы также поместите журнал в свой вопрос.