文档章节

Android中的Http的几种get的写法

请叫我学霸
 请叫我学霸
发布于 2016/05/09 22:54
字数 871
阅读 27
收藏 0
 面向过程的写法:
 public void gogetImage(View v){
    	
	path = ed_path.getText().toString().trim();
    	if(TextUtils.isEmpty(path)){
    		Toast.makeText(this, "路径有错误...", 0).show();
    		return;
    	}
    	// 连接网络的api  URL类 
    	try {
			URL url = new URL(path);
			
			// http://www.itheima.com/images_new/logo.jpg --由于这里 使用的 是 http协议去                             获得连接, 所以获得的是 
			// HttpURLConnection 的一个 实例 
			
			// ftp://www.itheima.com/images_new/logo.jpg
			// samba://www.itheima.com/images_new/logo.jpg
			// ssh://www.itheima.com/images_new/logo.jpg
			
			//建立一个 连接 --- Connection 对象
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			
			//设置请求的方式
			conn.setRequestMethod("GET");
			
			// 获得 服务器 返回的 状态吗 , 根据 状态码 去判断 是否 成功 
			int code = conn.getResponseCode();
			
			// 200 ,  404 ,500, 302, 304 ..
			
			if(code==200){
				
				//进来 则表示 成功的处理的 请求, 返回了 数据
				
				// 获得返回的图片的 流数据
				InputStream in = conn.getInputStream();
				
				//如果去解析呢 ???  --如何解析成一个 图片显示 
				
				// 这个事儿经常要做 ,谷歌 工程师 已经帮咱们提供好了现成 的类, 可以将一个                                     流数据转换为 一个图片
				
				//这已经是图片了
				Bitmap bitmap = BitmapFactory.decodeStream(in);
				
				iv.setImageBitmap(bitmap);
				in.close();
			}
			

		
面向对象的写法:
    	public void login(View v) {

		//获得 QQ号码和 密码 , 然后登录
		final String number = ed_number.getText().toString().trim();
		final String pwd = ed_pwd.getText().toString().trim();
		
		if(TextUtils.isEmpty(number)||TextUtils.isEmpty(pwd)){
			Toast.makeText(this, "号码或者密码不能为空", 0).show();
			return;
		}
		
		//如果在 发送数据的过程中, 传输了中文数据, 那么是需要进行url 编码的, 否则 带不过去
		// http://192.168.1.100:8080/web_login/login?number=%E5%93%88%E5%93%88&pwd=520itheima
		// http://192.168.1.100:8080/web_login/login?number=5201314&pwd=520itheima
		
		
		//走到这里 , 则说明 qq号码和密码 都输入了 ,然后 需要去连接 网络 
		new Thread(){
			
			public void run() {
				
				try {
					
					String path = "http://192.168.1.100:8080/web_login/login?";
					
					path = path+"number="+URLEncoder.encode(number, "UTF-8")+"&p                                            wd="+URLEncoder.encode(pwd, "UTF-8");
					//http://192.168.1.100:8080/web_login/login?number=123&pwd=4                                                56
					System.out.println(path);
					
					
					
					
					//面向对象 
					
					
					
					//客户端  浏览器
					HttpClient client = new DefaultHttpClient();
					//get 方式 请求的必要的参数
					HttpGet get = new HttpGet(path);
					//   http://192.168.1.100:8080/web_login/login
					//收到的 来自于服务器端的响应的 数据
					HttpResponse response = client.execute(get);
					//http 的相应 分为 响应行, 响应头, 响应体 
					
					
					
					// HTTP/1.1 200 OK
					int code = response.getStatusLine().getStatusCode();
					
					if(code==200){
						
						InputStream in = response.getEntity().getContent();
						
						String data2 = StreamTool.decodeStream(in);
						
						Message msg = Message.obtain();
						msg.what=SUCCESS;
						msg.obj = data2;
						mHandler.sendMessage(msg);
					}
					
				} catch (Exception e) {
					e.printStackTrace();
					Message msg = Message.obtain();
					msg.what=ERROR;
					mHandler.sendMessage(msg);
				}
				
			};
		}.start();
		
		
	}

}




面向对象的写法:
    这种写法是最吊的     访问网络不用我们创建子线程了  直接写在UI线程中
    它内部的实现其实还是使用handler只不过他帮我们封装好了   让我们用的比较爽而已
public void login(View v) {

		// 获得 QQ号码和 密码 , 然后登录
		final String number = ed_number.getText().toString().trim();
		final String pwd = ed_pwd.getText().toString().trim();

		if (TextUtils.isEmpty(number) || TextUtils.isEmpty(pwd)) {
			Toast.makeText(this, "号码或者密码不能为空", 0).show();
			return;
		}

	//	String path = "http://192.168.1.100:8080/web_login/login?number="+number+"&pwd="+pwd;
		String path="http://www.baidu.com";
		AsyncHttpClient client = new AsyncHttpClient();
		
		//封装 了 api , 使用到了handler 去 处理了 这些事儿 ...
		
		client.get(path, new AsyncHttpResponseHandler() {
			
			//请求成功的时候  会被调用的
			@Override
			public void onSuccess(int statusCode, Header[] headers,
					byte[] responseBody) {
//				System.out.println(new String(responseBody));
				tv_status.setText(new String(responseBody));
			}

			//请求 失败 的时候  会被调用的
			@Override
			public void onFailure(int statusCode, Header[] headers,
					byte[] responseBody, Throwable error) {
				error.printStackTrace(System.out);
				Toast.makeText(MainActivity.this, "对不起, 俺错误了...", 0).show();
			}
		});

	}



© 著作权归作者所有

请叫我学霸
粉丝 0
博文 3
码字总数 1151
作品 0
伊春
私信 提问
Android Listener侦听的N种写法

Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法。 OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用,其接口定义如下: Andr...

长平狐
2013/01/06
92
0
Android 中自定义控件和属性

在xml 文件里定义控件的属性,我们已经习惯了android:attrs="" ,那么我们能不能定义自己的属性能,比如:test:attrs="" 呢?答案是肯定的. 进入主题。大致以下步骤: 一、 在res/values 文件下...

lxp198837
2012/06/14
150
0
this 和 getApplicationContext Context的区别

转自:http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-context In various bits of Android code I've seen: 在大量的and......

拉风的道长
2012/09/18
2.1K
4
Android面经总结

Basic: 1. 基本的UI控件和布局文件 2. UI配套的Adapter的使用 3. Activity, Intent,Service,broadCast Receiver他们的生命周期管理熟悉一下 4. 操作手机上的数据库SQLite应用 Advanced_1(这是...

晨曦之光
2012/03/09
221
0
Android面经总结

Basic: 1. 基本的UI控件和布局文件 2. UI配套的Adapter的使用 3. Activity, Intent,Service,broadCast Receiver他们的生命周期管理熟悉一下 4. 操作手机上的数据库SQLite应用 Advanced_1(这是...

晨曦之光
2012/03/07
488
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部