必须放在线程里才能执行,晕死了。
package com.eric.httpdemo;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
String str_url = "http://www.zhangjianghome.net/android/title-select.php";
private final static int handler_flag = 0x1234;
private Handler HttpHandler;
TextView post;
@SuppressLint("HandlerLeak")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
post = (TextView) this.findViewById(R.id.post);
HttpHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case handler_flag:
post.setText("文章ID:"
+ getJSONFromString(msg.obj.toString()).optString(
"ID")
+ "\n"
+ "文章标题:"
+ getJSONFromString(msg.obj.toString()).optString(
"post_title")
+ "\n"
+ "发表日期:"
+ getJSONFromString(msg.obj.toString()).optString(
"post_date")
+ "\n"
+ "文章内容:"
+ getJSONFromString(msg.obj.toString()).optString(
"post_content"));
break;
default:
break;
}
super.handleMessage(msg);
}
};
new Thread(new HttpRunnable()).start();
}
private String getResultStringHttp(String str_url) {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(str_url);
HttpResponse httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String strResult = EntityUtils.toString(httpResponse
.getEntity());
return strResult;
} else {
return null;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class HttpRunnable implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
try {
do {
String str_result = getResultStringHttp(str_url);
Thread.sleep(1000);
Message msg = Message.obtain();
msg.what = handler_flag;
msg.obj = str_result;
MainActivity.this.HttpHandler.sendMessage(msg);
} while (Thread.interrupted() == false);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private JSONObject getJSONFromString(String jsonString) {
try {
JSONObject jsonObject;
jsonObject = new JSONObject(jsonString);
return jsonObject;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}