2016-04-29 50 views
-2

請鰭Main.java代碼如下如何提取和Android的

public class Main extends Activity implements OnClickListener { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    findViewById(R.id.my_button).setOnClickListener(this); 
} 

@Override 
public void onClick(View arg0) { 
    Button b = (Button)findViewById(R.id.my_button); 
    b.setClickable(false); 
    new LongRunningGetIO().execute(); 
} 

private class LongRunningGetIO extends AsyncTask <Void, Void, String> { 

    protected String getASCIIContentFromEntity(HttpEntity entity) throws IllegalStateException, IOException { 
     InputStream in = entity.getContent(); 
     StringBuffer out = new StringBuffer(); 
     int n = 1; 
     while (n>0) { 
      byte[] b = new byte[4096]; 
      n = in.read(b); 
      if (n>0) out.append(new String(b, 0, n)); 
     } 
     return out.toString(); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpContext localContext = new BasicHttpContext(); 
     HttpGet httpGet = new HttpGet("http://191.166.1.88:2000"); 
     String text = null; 
     try { 
       HttpResponse response = httpClient.execute(httpGet, localContext); 
       HttpEntity entity = response.getEntity(); 
       text = getASCIIContentFromEntity(entity); 
     } catch (Exception e) { 
      return e.getLocalizedMessage(); 
     } 
     return text; 
    } 

    protected void onPostExecute(String results) { 
     if (results!=null) { 
      EditText et = (EditText)findViewById(R.id.my_edit); 
      et.setText(results); 
     } 
     Button b = (Button)findViewById(R.id.my_button); 
     b.setClickable(true); 
     } 
    } 
    } 

我收到來自REST API的JSON數據顯示領域,它是如下圖所示

{"Tm":{"Time": "Mon Nov 20 12:45:59 IST 2015"},"Name": 
{"Host": "u1", "IP": "190.166.169.137"},"Speed":{"cpu": 
    2494.259033203125}} 

如何提取只有主機的Nama是「u1」並顯示在android的文本框中。我是新來的,請幫忙

回答

0

把你的doInBackground改成這個也會使String的返回類型doInBackground變成JSONObject。

try { 
      URL url = new URL("http://191.166.1.88:2000"); 
      HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
      connection.connect(); 
      System.out.println(connection.getResponseMessage()); 

      responseCode = connection.getResponseCode(); 
      if(responseCode == HttpURLConnection.HTTP_OK) { 
       InputStream inputStream = connection.getInputStream(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); 
       String responseData = "", data=""; 
       while ((data = reader.readLine()) != null){ 
        responseData += data + "\n"; 
       } 
       jsonResponse = new JSONObject(responseData); 

      } else { 
       //Not Success 
      } 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return jsonResponse; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return jsonResponse; 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return jsonResponse; 
     } 
     return jsonResponse; 

而且onPostExecute這個

@Override 
    protected void onPostExecute(JSONObject result) { 
     if(result != null) { 
      JSONObject name =result.getJSONObject("Name"); 
      String host = name.getString("Host"); 
     } 
    } 
+0

我加的Json jar文件也不少錯誤顯示 – poo

+0

你並不需要此JSON罐子。什麼是錯誤? –

+0

未找到Json對象 – poo