android程序HTTP通信的简单示例。纯粹是为了学习+测试,所以存在代码冗余的现象。从一个最简单的登录验证开始,数据的提交方式分别使用GET和POST,利用Toast来提示登录结果。
android.php源码:
查看代码 PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $REQUEST_METHOD = $_SERVER['REQUEST_METHOD']; echo $REQUEST_METHOD; if($REQUEST_METHOD == 'GET'){ $name = $_GET['name']; $pwd = $_GET['pwd']; if($name == 'Neeke' && $pwd == 'Neeke'){ echo '你好:'.$name; }else{ echo '登录失败!'; } }else if($REQUEST_METHOD == 'POST'){ $name = $_POST['name']; $pwd = $_POST['pwd']; if($name == 'Neeke' && $pwd == 'Neeke'){ echo '你好:'.$name; }else{ echo '登录失败!'; } } ?> |
android主程序源码:
查看代码 JAVA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | public class Main extends Activity { private Button btnGet; private Button btnPost; private EditText etName; private EditText etPwd; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnGet = (Button) findViewById(R.id.btnGet); btnPost = (Button) findViewById(R.id.btnPost); etName = (EditText) findViewById(R.id.etName); etPwd = (EditText) findViewById(R.id.etPassword); btnGet.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { HttpGet request = new HttpGet("http://www.ineeke.com/android/android.php?name="+etName.getText().toString()+"&pwd="+etPwd.getText().toString()); try { HttpResponse response = new DefaultHttpClient().execute(request); if(response.getStatusLine().getStatusCode() == 200){ String result = EntityUtils.toString(response.getEntity()); Toast.makeText(Main.this, result, Toast.LENGTH_LONG).show(); } } catch (Exception e) { Toast.makeText(Main.this, e.getMessage().toString(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }); btnPost.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { HttpPost request = new HttpPost("http://www.ineeke.com/android/android.php"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name", etName.getText().toString())); params.add(new BasicNameValuePair("pwd", etPwd.getText().toString())); try { request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); HttpResponse response = new DefaultHttpClient().execute(request); if(response.getStatusLine().getStatusCode() == 200){ String result = EntityUtils.toString(response.getEntity()); Toast.makeText(Main.this, result, Toast.LENGTH_LONG).show(); } } catch (Exception e) { Toast.makeText(Main.this, e.getMessage().toString(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }); } } |
最后,千万千万不要忘记要赋予程序访问网络的权限!因为我就经常忘记权限的问题,导致出了问题郁闷老半天。
在AndroidManifest.xml加入:
查看代码 XML
1 | <uses-permission android:name="android.permission.INTERNET" /> |


