記錄一個成功例子:
MainActivity類
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private Button update;
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
update = (Button) findViewById(R.id.update);
listView = (ListView) findViewById(R.id.listView);
update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String urlStr = "http://172.16.43.142:8888/HTTPTest2/json.action";
String result = GsonUtil.getJson(urlStr);
// Log.i("Click", result);
// Toast.makeText(MainActivity.this, result+"yes", Toast.LENGTH_SHORT).show();
List<Music> list = GsonUtil.getListFromJson(result);
List<Map<String, Object>> data = getAdapterData(list);
if (data != null) {
SimpleAdapter adapter = new SimpleAdapter(
MainActivity.this, data, R.layout.list,
new String[] { "name", "author", "time" },
new int[] { R.id.name, R.id.author, R.id.time });
listView.setAdapter(adapter);
// listView.
}
}
});
}
private List<Map<String, Object>> getAdapterData(List list) {
if (list == null)
return null;
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = new HashMap<String, Object>();
Music music = (Music) list.get(i);
map.put("name", music.getName());
map.put("author", music.getAuthor());
map.put("time", music.getTime());
data.add(map);
}
return data;
}
}
GsonUtil類
import java.net.URI;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
import android.os.StrictMode;
import com.google.gson.Gson;
public class GsonUtil {
static String result = "";
public static String getJson(final String url) {
final HttpClient client = new DefaultHttpClient();
new Thread() {
@Override
public void run() {
try {
StrictMode.enableDefaults();
HttpPost request = new HttpPost(new URI(url));
// //連接超時
// client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
// //請求超時
// client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
HttpResponse response = client.execute(request);
// 判斷請求是否成功
if (response.getStatusLine().getStatusCode() == 200) { // 200表示請求成功
HttpEntity entity = response.getEntity();
if (entity != null) {
String beanListToJson = EntityUtils.toString(
entity, "UTF-8");
GsonUtil.result = beanListToJson;
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}.start();
return result;
}
public static List<Music> getListFromJson(String json) {
java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {
}.getType();
Gson gson = new Gson();
List<Music> list = gson.fromJson(json, type);
return list;
}
}