2014-12-02 3 views
1

Я использую базу данных mysql в хосте, я хочу получить данные с моего хоста, но когда я получу данные в текстовое представление, он пуст.php Json получение пустого текстового поля

public class MainActivity extends Activity { 
TextView tv1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tv1=(TextView)findViewById(R.id.name); 
    Loader loader = new Loader(getApplicationContext()); 
    tv1.setText(loader.loadInBackground()); 
} 
public static class Loader extends AsyncTaskLoader<String>{ 
    public Loader (Context contexto) 
    { 
     super(contexto); 

    } 

    @Override 
    public String loadInBackground() { 

     String resultado = ""; 
     String entrada = ""; 

     DefaultHttpClient cliente = new DefaultHttpClient(); 
     HttpGet httpget = new HttpGet("http://comupunt.esy.es/cities.php"); 
     try { 
      HttpResponse execute = cliente.execute(httpget); 
      InputStream contenido = execute.getEntity().getContent(); 
      BufferedReader buffer = new BufferedReader(new InputStreamReader(contenido)); 

      String s=""; 
      while((s=buffer.readLine())!=null) 
       resultado+=s; 
      { 

      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

     try { 

      JSONObject object = new JSONObject(resultado); 
      JSONArray jarray = object.getJSONArray("cities"); 

      for (int i=0;i<jarray.length();i++) 
      { 
       JSONObject jobject = jarray.getJSONObject(i); 
       String name=jobject.getString("name"); 
       entrada += name; 

      } 


     } catch (Exception e) { 
      // TODO: handle exception 
      Log.e("WebService", e.getMessage()); 
     } 

     return entrada; 

    } 
} 


} 

РНР с JSON получить эту

{ "города": [{ "Имя": "Aitor"}]}

и LogCat:

12-02 04:24:01.492: E/WebService(2190): End of input at character 0 of 

благодаря

+0

Возможный дубликат http://stackoverflow.com/questions/24301521/jsonexception-end-of-input-at-character-0 или http://stackoverflow.com/questions/ 23170610/error-parsing-data-org-json-jsonexception-end-of-input-at-character-0-of – Chitrang

+0

У меня только ошибка в logcat –

ответ

1

Вы находитесь в MainActivity, поэтому линия

HttpResponse execute = cliente.execute(httpget); 

является бросание networkonmainthreadexception вы можете проверить его с помощью (в первой попытке поймать, а)

catch (Exception e) { 
     // TODO: handle exception 
     Log.e("errormsg", e.ToString(); 
    } 

поэтому вместо того, чтобы использовать AsyncTaskLoader лучше использовать AsyncTask.

public class MainActivity extends Activity { 

TextView tv1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tv1 = (TextView) findViewById(R.id.text); 
    Exe exe = new Exe(); 
    try { 
     URI uri = new URI("http://comupunt.esy.es/cities.php"); 
    } catch (URISyntaxException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    exe.execute(); 

} 

class Exe extends AsyncTask<URL, String, String> { 

    String entrada = ""; 

    @Override 
    protected String doInBackground(URL... url) { 

     String resultado = ""; 

     try { 
      DefaultHttpClient cliente = new DefaultHttpClient(); 

      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      URI uri = new URI("http://comupunt.esy.es/cities.php"); 
      HttpGet http = new HttpGet(uri); 


      HttpResponse execute = cliente.execute(http); 

      InputStream contenido = execute.getEntity().getContent(); 

      BufferedReader buffer = new BufferedReader(
        new InputStreamReader(contenido)); 

      String s = ""; 

      while ((s = buffer.readLine()) != null) { 
       resultado += s; 
      } 
      JSONObject object = new JSONObject(resultado); 
      Log.e("WebService1", object.toString()); 
      JSONArray jarray = object.getJSONArray("cities"); 

      for (int i = 0; i < jarray.length(); i++) { 
       JSONObject jobject = jarray.getJSONObject(i); 
       String name = jobject.getString("name"); 
       entrada = name; 

      } 

     } catch (Exception e) { 
      // TODO: handle exception 
      Log.e("WebService", e.getMessage()); 
     } 

     return entrada; 

    } 


    @Override 
    protected void onPostExecute(String res) { 

     tv1.setText(entrada); 
    } 
} 

}

+0

спасибо большое !! Я сделал это! но я могу заполнить объект с большим количеством данных из базы данных? –

+0

Я могу заполнить список с разными данными из строки за строкой? например: имя и возраст _______ имя и возраст –

Смежные вопросы