android 访问网络三 (基于httpclient)

利用httpclient来模拟用户登录

public class MainActivity extends Activity {
<span style="white-space:pre">	</span>//定义处理成功
	protected static final int SUCEESS = 0;
<span style="white-space:pre">	</span>//反回错误的响应状态码时的错误
	protected static final int ERROR = 1;
<span style="white-space:pre">	</span>//网络错误时
	protected static final int NET_ERROR = 2;
	private EditText et_name;
	private EditText et_pwd;
<span style="white-space:pre">	</span>//利用handler 来实现子线程更新UI
	private Handler handler = new Handler() {

		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case SUCEESS:
				Toast.makeText(MainActivity.this, (String) msg.obj, 0).show();
				break;
			case ERROR:
				Toast.makeText(MainActivity.this, "请求有误", 0).show();
				break;
			case NET_ERROR:
				Toast.makeText(MainActivity.this, "网络异常", 0).show();
				break;

			default:
				break;
			}
		};
	};

	// private String path="http://192.168.1.96:8080/Loginfromphone/login";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		et_name = (EditText) findViewById(R.id.et_name);
		et_pwd = (EditText) findViewById(R.id.et_pwd);

	}

	public void login(View v) {

		final String name = et_name.getText().toString().trim();
		final String pwd = et_pwd.getText().toString().trim();

		if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {

			Toast.makeText(this, "用户名或密码不能为空", 0).show();
			return;
		}

		new Thread() {
			@Override
			public void run() {

				try {

					String path = "http://192.168.1.96:8080/Loginfromphone/login?";
<span style="white-space:pre">					</span>//get请求组拼url,因为get请求时参数是跟在url后面的
<span style="white-space:pre">					</span>//并且对name 与 pwd进行url编码
					path = path + "username="
							+ URLEncoder.encode(name, "utf-8") + "&password="
							+ URLEncoder.encode(pwd, "utf-8");
					// 创建一个客户端对象
					HttpClient client = new DefaultHttpClient();
					// 创建一个get请求的对象
					HttpGet get = new HttpGet(path);
					// 发送一个get请求
					HttpResponse response = client.execute(get);
<span style="white-space:pre">					</span>//获取状态行
					StatusLine statusLine = response.getStatusLine();
<span style="white-space:pre">					</span>//取得响应状态码
					int code = statusLine.getStatusCode();
					if (code == 200) {
<span style="white-space:pre">						</span>//拿到服务器端返回数据流
						InputStream in = response.getEntity().getContent();
						String data = StreamTool.stream2String(in);
						Message msg = Message.obtain();
						msg.what = SUCEESS;
						msg.obj = data;
						handler.sendMessage(msg);

					} else {

						handler.sendEmptyMessage(ERROR);
					}

				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
					handler.sendEmptyMessage(NET_ERROR);

				}

			}
		}.start();

	}

	public void login1(View v) {

		final String name = et_name.getText().toString().trim();
		final String pwd = et_pwd.getText().toString().trim();

		if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {

			Toast.makeText(this, "用户名或密码不能为空", 0).show();
			return;
		}

		new Thread() {
			@Override
			public void run() {

				try {

					String path = "http://192.168.1.96:8080/Loginfromphone/login";

					// 创建一个客户端对象
					HttpClient client = new DefaultHttpClient();
					// 创建一个post请求对象
					HttpPost post = new HttpPost(path);
<span style="white-space:pre">					</span>//设置参数
					List<NameValuePair> params = new ArrayList<NameValuePair>();
					params.add(new BasicNameValuePair("username", name));
					params.add(new BasicNameValuePair("password", pwd));
<span style="white-space:pre">					</span>//
					post.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
					HttpResponse response = client.execute(post);

					StatusLine statusLine = response.getStatusLine();

					int code = statusLine.getStatusCode();
					if (code == 200) {

						InputStream in = response.getEntity().getContent();
						String data = StreamTool.stream2String(in);
						Message msg = Message.obtain();
						msg.what = SUCEESS;
						msg.obj = data;
						handler.sendMessage(msg);

					} else {

						handler.sendEmptyMessage(ERROR);
					}

				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
					handler.sendEmptyMessage(NET_ERROR);

				}

			}
		}.start();

	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值