Android HttpPost

記錄一個成功例子:


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;
	}
}


發佈了20 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章