2011-05-19 1 views
1

Я написал класс Android, который будет называть веб-сервис RESTful. Если запрос будет успешным, ответ будет объектом JSON. Я пишу андроид класс, как это:Как преобразовать ответ JSON в String и показать на экране?

общественного класса андроида расширяет активность {

public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView txt = (TextView) findViewById(R.id.textView1); 
    txt.setText(getInputStreamFromUrl("http://localhost:8080/kyaw")); 
    } 

    public static String getInputStreamFromUrl(String url) { 
      InputStream content = null; 
      try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(new HttpGet(url)); 
      content = response.getEntity().getContent(); 
      } catch (Exception e) { 
      Log.e("[GET REQUEST]", "Network exception"); 
      } 
      String result=convert(content); 
      return result; 
     } 

    private static String convert(InputStream in) 
    { 
     BufferedReader reader=new BufferedReader(new InputStreamReader(in)); 
     StringBuilder sb=new StringBuilder(); 
     String line=null; 
     try{ 
      while((line=reader.readLine())!=null){ 
       sb.append(line+"\n"); 
      } 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     }finally{ 
      try{ 
       in.close(); 
      }catch(IOException e){ 
       e.printStackTrace(); 
      } 
     } 
     return sb.toString(); 
    } 

}

У меня есть проблема после того, как я run.I получит исключение кузен я вернуться в ответ string.But это JSON. Как мне преобразовать JSON в String или другим способом, а затем как показать результат на экране Android?

благодаря enter image description here

+0

какое исключение? FC? Ответ JSON с сервера - это строка. – Selvin

+0

hi selvin, когда я запускаю виртуальное устройство класса andriod, предупреждаю меня, что есть исключение, затем закройте, но не покажите, какое исключение. Я отлаживаю его, я нашел исключение в ответе HttpResponse = httpclient.execute (новый HttpGet (url)); , Я не знаю, почему и я новичок в этом – sudo

+0

Сначала включите Logcat http://stackoverflow.com/questions/3280051/how-to-enable-logcat-in-eclipse. второй предоставить журналы из окна logcat – Selvin

ответ

1

хорошо "HTTP: // локальный: 8080/Чжо" проблема ... этим вы poining в эмулятор не хозяин эмулятора. .. и вы получаете сообщение об ошибке сети

попробовать "http://ip.of.your.host:8080/kyaw"

EDIT:

 content = response.getEntity().getContent();// here comes an error 
     } catch (Exception e) { 
     Log.e("[GET REQUEST]", "Network exception");//we catch it here 
     } 
     //here you got content == null 
     //so you getting null point exception 
+0

спасибо сельвин. он решен – sudo

1

Я просто сделать это:

HttpClient client = new DefaultHttpClient(); 
HttpPost poster = new HttpPost("http://www.example.com/json.php"); 
poster.addHeader("Content-Type", "text/json"); 
poster.setEntity(new StringEntity(data.toString())); 
//data being a json object created and filled earlier 
HttpResponse response = client.execute(poster);         
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
{ 
    DataInputStream input = new DataInputStream(response.getEntity().getContent()); 
    JSONObject json = new JSONObject(input.readLine()); 
    json.toString(2); 
}