当前位置:操作系统 > 安卓/Android >>

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

什么是HTTP?
1.超文本传输协议是互联网上应用最为广泛的一种网络协议
2.HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务器端是网站
3.HTTP是客户端浏览器或其他应用程序与Web服务器之间的应用层通信协议
 
HTTP工作原理
1.客户端与服务器建立连接
2.建立连接后,客户端想服务器端发送一个请求
3.服务器接收到请求之后,向客户端发送响应信息
4.客户端与服务器端断开连接
注意:这里的第四条需要注意,即当用户看到如下的界面时,客户端就已经与服务器断开连接了。
 
HTTP运行流程
下面以一个简单的例子介绍与服务器端的连接,并从服务器端获取数据,下图是运行的截图:
当用户点击按钮时,向服务器端发送请求,并把返回的数据显示在下面的textview中,下面是具体的实现代码:
[java]  
p<span style="font-size:18px;">ublic 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;  
    }  
  
}  
</span>  
注意,由于涉及到网络连接,还要在AndroidManifest中声明网络权限:
 
[html]  
<uses-permission android:name="android.permission.INTERNET"/>  
 
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,