Android中HTTP Post和Get請求
阿新 • • 發佈:2018-11-13
簡單的隨手記,適合初學者使用,現在網路請求比較流行使用OKHttp,後期部落格會寫到如何使用。
在AndroidManifest加入以下許可權
<uses-permission android:name="android.permission.INTERNET" />
Http get請求
public class HttpGetThread extends Thread { private Handler handler; private String httpUrl; private int mWhat; public static final int ERROR = 404; public static final int SUCCESS = 200; public HttpGetThread(Handler handler, String httpUrl) { super(); this.handler = handler; this.httpUrl = httpUrl; mWhat = SUCCESS; } public HttpGetThread(Handler handler, String httpUrl, int what) { super(); this.handler = handler; this.httpUrl = httpUrl; mWhat = what; } @Override public void run() { // TODO Auto-generated method stub try { // HttpClient httpclient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(httpUrl); String result = null; HttpResponse response = new DefaultHttpClient().execute(httpGet); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, HTTP.UTF_8); handler.sendMessage(Message.obtain(handler, mWhat, result)); // 請求成功 } else { result = "請求失敗" + response.getStatusLine().getStatusCode(); // 請求失敗 // 404 - 未找到 handler.sendMessage(Message.obtain(handler, Config.ERROR, result)); } } catch (Exception e) { e.printStackTrace(); handler.sendMessage(Message.obtain(handler, Config.ERROR, "異常退出")); } super.run(); } }
http post請求
public class HttpPostThread extends Thread { private Handler handler; private String httpUrl; private List<NameValuePair> valueList; private int mWhat; public static final int ERROR = 404; public static final int SUCCESS = 200; public HttpPostThread(Handler handler, String httpUrl, List<NameValuePair> list, int what) { super(); this.handler = handler; this.httpUrl = httpUrl; this.valueList = list; this.mWhat = what; } public HttpPostThread(Handler handler, String httpUrl, List<NameValuePair> list) { super(); this.handler = handler; this.httpUrl = httpUrl; this.valueList = list; this.mWhat = SUCCESS ; } @Override public void run() { // TODO Auto-generated method stub String result = null; try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(httpUrl); httpPost.setEntity(new UrlEncodedFormEntity(valueList, HTTP.UTF_8)); // 請求超時 httpclient.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT, 20000); HttpResponse response = httpclient.execute(httpPost); // HttpStatus.SC_OK表示連線成功 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, HTTP.UTF_8); if (handler != null) { handler.sendMessage(Message.obtain(handler, mWhat, result)); // 請求成功 } else { } } else { result = "請求失敗" + response.getStatusLine().getStatusCode(); // 請求失敗 // HttpEntity entity = response.getEntity(); // String str = EntityUtils.toString(entity, HTTP.UTF_8); MyLog.println(""+result); // 404 - 未找到 if (handler != null) { handler.sendMessage(Message.obtain(handler, Config.ERROR, result)); } } } catch (Exception e) { e.printStackTrace(); if (handler != null) { result = "請求失敗 Exception"; handler.sendMessage(Message.obtain(handler, Config.ERROR, result)); } } super.run(); } public static String HttpAsynPost(String AUrl, List<NameValuePair> ValueList) { String result = null; try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(AUrl); httpPost.setEntity(new UrlEncodedFormEntity(ValueList, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httpPost); // HttpStatus.SC_OK表示連線成功 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = response.getEntity(); result = EntityUtils.toString(entity, HTTP.UTF_8); } else { result = "請求失敗" + response.getStatusLine().getStatusCode(); // 請求失敗 } } catch (Exception e) { e.printStackTrace(); result = "請求失敗,網路異常"; } return result; } }
例項:
public class MainActivity extends Activity { private Button btn, btn1; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); initData(); } private void initView() { btn = (Button) findViewById(R.id.btn); btn1 = (Button) findViewById(R.id.btn1); } private void initListener() { btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List<NameValuePair> list = new ArrayList<NameValuePair>(); HttpPostThread thread = new HttpPostThread(mHandler, "http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0", list, 200); thread.start(); } }); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HttpGetThread thread = new HttpGetThread(mHandler, "http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0", 200); thread.start(); } }); } private void initData() { mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String result = (String) msg.obj; switch (msg.what) { case 200: //請求成功 Log.e("TAG", "返回引數===" + result); break; case 404: //請求失敗 Log.e("TAG", "請求失敗!"); break; } } }; } }