Android开发--Http操作介绍(一)

什么是HTTP?

1.超文本传输协议是互联网上应用最为广泛的一种网络协议

2.HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务器端是网站

3.HTTP是客户端浏览器或其他应用程序与Web服务器之间的应用层通信协议


HTTP工作原理

1.客户端与服务器建立连接

2.建立连接后,客户端想服务器端发送一个请求

3.服务器接收到请求之后,向客户端发送响应信息

4.客户端与服务器端断开连接

注意:这里的第四条需要注意,即当用户看到如下的界面时,客户端就已经与服务器断开连接了。



HTTP运行流程


下面以一个简单的例子介绍与服务器端的连接,并从服务器端获取数据,下图是运行的截图:


当用户点击按钮时,向服务器端发送请求,并把返回的数据显示在下面的textview中,下面是具体的实现代码:

public class MainActivity extends Activity {
	private Button button;
	private TextView textView;
	private HttpResponse httpResponse=null;
	private HttpEntity httpEntity=null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button=(Button)findViewById(R.id.button);
		textView=(TextView)findViewById(R.id.textview);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//生成一个请求对象
				HttpGet httpGet=new HttpGet("http://www.baidu.com");
				//生成一个Http客户端对象
				HttpClient httpClient=new DefaultHttpClient();
				//使用Http客户端发送请求对象
				InputStream inputStream=null;
				try {
					httpResponse=httpClient.execute(httpGet);
					//收到服务器的响应之后把返回的数据读取出来
					httpEntity=httpResponse.getEntity();
					inputStream=httpEntity.getContent();
					//流文件的读取
					BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
					String resultString="";
					String lineString="";
					while((lineString=reader.readLine())!=null){
						resultString=resultString+lineString;
					}
					textView.setText(resultString);
				} catch (ClientProtocolException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				finally{
					try {
						inputStream.close();
					} catch (Exception e2) {
						// TODO: handle exception
						e2.printStackTrace();
					}
				}
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}
注意,由于涉及到网络连接,还要在AndroidManifest中声明网络权限:


<uses-permission android:name="android.permission.INTERNET"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值