2014-10-08 4 views
1

Не удалось получить данные с сервера даже у меня есть значение в textview согласно моему состоянию в onCreate() и когда я удалить это условие это works просто отлично для меня (моего среднего, в этом случае я am able to fetch JSON data с сервера).Невозможно получить данные в формате JSON от сервера

и я пробовал много вещей, но до сих пор не успеха для меня, всегда получает "Unable to fetch data from server" потому что я использовал это как Тост в onPostExecute() методы AsyncTask

Я получаю value для TextView и это точно его вызывающих execute метода из AsyncTask как хорошо, но всегда получаю Не удается получить данные с сервера

у вас есть вопросы в вашем уме:

1) Почему я использую такое условие в onCreate(), а затем проверить этот мой question

2) Почему я установка адаптера в onPostExecute(), а затем проверить мой этот question

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_video_category);  

     etTextToSave = (TextView) findViewById(R.id.textView2); 

     sharedprefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
     etTextToSave.setText(sharedprefs.getString("SharedPrefsData",""));  

     actorsList = new ArrayList<VideoCategory>(); 

     if(etTextToSave.getText().toString().length()>0) 
     {    
      new JSONAsyncTask().execute("http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors");    
     }    
     centerLockHorizontalScrollview = (HSVActivity) findViewById(R.id.scrollView); 

    } 

    class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { 

      ProgressDialog dialog; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       dialog = new ProgressDialog(MainActivity.this); 
       dialog.setMessage("Loading, please wait"); 
       dialog.setTitle("Connecting server"); 
       dialog.show(); 
       dialog.setCancelable(false); 
      } 

      @Override 
      protected Boolean doInBackground(String... urls) { 
       try { 

        //------------------>> 
        HttpGet httppost = new HttpGet(urls[0]); 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpResponse response = httpclient.execute(httppost); 

        // StatusLine stat = response.getStatusLine(); 
        int status = response.getStatusLine().getStatusCode(); 

        if (status == 200) { 
         HttpEntity entity = response.getEntity(); 
         String data = EntityUtils.toString(entity); 


         JSONObject jsono = new JSONObject(data); 
         JSONArray jarray = jsono.getJSONArray("actors"); 

         for (int i = 0; i < jarray.length(); i++) { 
          JSONObject object = jarray.getJSONObject(i); 

          Actors actor = new Actors(); 

          actor.setName(object.getString("name")); 
          Log.d("Name:", object.getString("name")); 
          actor.setImage(object.getString("image")); 
          Log.d("Image:", object.getString("image")); 

          actorsList.add(actor); 
         } 
         return true; 
        } 

        //------------------>> 

       } catch (ParseException e1) { 
        e1.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       return false; 
      } 

      protected void onPostExecute(Boolean result) { 
       dialog.cancel();     
       if(result == false) 
        Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show(); 
       if(actorsList != null) { 
        adapter = new VideoCategoryAdapter(getApplicationContext(), R.layout.adapter_video_category, actorsList);  
        centerLockHorizontalScrollview.setAdapter(HomeActivity.this, adapter); 
       } 
      } 
     } 
+0

Что вы получаете в 'String data = EntityUtils.toString (entity);' строка с сервера? –

+0

@ ρяσѕρєяK, что трудно мне сказать, потому что мое приложение слишком сложно, поэтому я использую реальное устройство, и когда я подключу свое реальное устройство к системе, оно не подходит для тестирования приложения, поэтому я тестирую свое приложение, apks .. но, пожалуйста, попробуйте помочь мне, я все объяснил – Sophie

+0

ok создать временный файл на SDCard для проверки ответа с сервера. –

ответ

1

I я не получаю никаких исключений или сообщений с тостами. Проверьте ответ Json.

enter image description here

1

В соответствии с Опубликованная вопрос, вы получите данные с сервера по-прежнему получаете Toast, что «Не удалось получить данные с сервера». Я сделал небольшое изменение в вашем коде, пожалуйста, попробуйте и дайте мне знать.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_video_category);  

    etTextToSave = (TextView) findViewById(R.id.textView2); 

    sharedprefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
    etTextToSave.setText(sharedprefs.getString("SharedPrefsData",""));  

    actorsList = new ArrayList<VideoCategory>(); 

    if(etTextToSave.getText().toString().length()>0) 
    {    
     new JSONAsyncTask().execute("http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors");    
    }    
    centerLockHorizontalScrollview = (HSVActivity) findViewById(R.id.scrollView); 

} 

class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { 

     ProgressDialog dialog; 
     JSONObject jObj; 


     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog = new ProgressDialog(MainActivity.this); 
      dialog.setMessage("Loading, please wait"); 
      dialog.setTitle("Connecting server"); 
      dialog.show(); 
      dialog.setCancelable(false); 
     } 

     @Override 
     protected Boolean doInBackground(String... urls) { 
      try { 

       //------------------>> 
       HttpGet httppost = new HttpGet(urls[0]); 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpResponse response = httpclient.execute(httppost); 

       // StatusLine stat = response.getStatusLine(); 
       int status = response.getStatusLine().getStatusCode(); 

       if (status == 200) { 
        HttpEntity entity = response.getEntity(); 
        String data = EntityUtils.toString(entity); 


        jObj = new JSONObject(data); 

        if(!(jObj.equals(null))) 
        { 

        JSONArray jarray = jsono.getJSONArray("actors"); 
        for (int i = 0; i < jarray.length(); i++) { 
         JSONObject object = jarray.getJSONObject(i); 

         Actors actor = new Actors(); 

         actor.setName(object.getString("name")); 
         Log.d("Name:", object.getString("name")); 
         actor.setImage(object.getString("image")); 
         Log.d("Image:", object.getString("image")); 

         actorsList.add(actor); 

        } 
        } 
        return true; 
       } 

       //------------------>> 

      } catch (ParseException e1) { 
       e1.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return false; 
     } 

     protected void onPostExecute(Boolean result) { 
      dialog.cancel();     
      if(jObj== null) 
       Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show(); 
      if(actorsList != null) { 
       adapter = new VideoCategoryAdapter(getApplicationContext(), R.layout.adapter_video_category, actorsList);  
       centerLockHorizontalScrollview.setAdapter(HomeActivity.this, adapter); 
      } 
     } 
    } 
Смежные вопросы