博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 网络编程 HttpGet类和HttpPost类使用详解
阅读量:7196 次
发布时间:2019-06-29

本文共 2867 字,大约阅读时间需要 9 分钟。

 虽然在登录系统中使用了Web Service与服务端进行交互。但是在传递大量的数量时,Web Service显得有些笨拙。在本节将介绍移动电子相册中使用的另外一种与数据库交互的方法。直接发送HTTP GETPOST请求。这就要用到HttpGetHttpPost以及HttpURLConnection这些类。

15.3.1  HttpGet类和HttpPost

本节将介绍Android SDK集成的Apache HttpClient模块。要注意的是,这里的Apache HttpClient模块是HttpClient 4.0org.apache.http.*),而不是Jakarta Commons HttpClient 3.xorg.apache.commons.httpclient.*)。

HttpClient模块中用到了两个重要的类:HttpGetHttpPost。这两个类分别用来提交HTTP GETHTTP POST请求。为了测试本节的例子,需要先编写一个Servlet程序,用来接收HTTP GETHTTP POST请求。读者也可以使用其他服务端的资源来测试本节的例子。

假设192.168.17.81是本机的IP,客户端可以通过如下的URL来访问服务端的资源:

http://192.168.17.81:8080/querybooks/QueryServlet?bookname=开发

在这里booknameQueryServlet的请求参数,表示图书名,通过该参数来查询图书信息。

现在我们要通过HttpGetHttpPost类向QueryServlet提交请求信息,并将返回结果显示在TextView组件中。

无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。

1.创建HttpGetHttpPost对象,将要请求的URL通过构造方法传入HttpGetHttpPost对象。

2.使用DefaultHttpClient类的execute方法发送HTTP GETHTTP POST请求,并返回HttpResponse对象。

3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

如果使用HttpPost方法提交HTTP POST请求,还需要使用HttpPost类的setEntity方法设置请求参数。

本例使用了两个按钮来分别提交HTTP GETHTTP POST请求,并从EditText组件中获得请求参数(bookname)值,最后将返回结果显示在TextView组件中。两个按钮共用一个onClick事件方法,代码如下:

public void onClick(View view)  

{  

    //  读者需要将本例中的IP换成自己机器的IP  

    String url = "http://192.168.17.81:8080/querybooks/QueryServlet";  

    TextView tvQueryResult = (TextView) findViewById(R.id.tvQueryResult);  

    EditText etBookName = (EditText) findViewById(R.id.etBookName);  

    HttpResponse httpResponse = null;  

    try  

    {  

        switch (view.getId())  

        {  

            //  提交HTTP GET请求  

            case R.id.btnGetQuery:  

                //  url添加请求参数  

                url += "?bookname=" + etBookName.getText().toString();  

                //  1步:创建HttpGet对象  

                HttpGet httpGet = new HttpGet(url);  

                //  2步:使用execute方法发送HTTP 

GET请求,并返回HttpResponse对象  

                httpResponse = new DefaultHttpClient().execute(httpGet);  

                //  判断请求响应状态码,状态码为200

示服务端成功响应了客户端的请求  

                if (httpResponse.getStatusLine().

getStatusCode() == 200)  

                {  

                    //  3步:使用getEntity方法获得返回结果  

                    String result = EntityUtils.

toString(httpResponse.getEntity());  

                    //  去掉返回结果中的"\r"字符,

否则会在结果字符串后面显示一个小方格  

                    tvQueryResult.setText(result.replaceAll("\r", ""));  

                }  

                break;  

            //  提交HTTP POST请求  

            case R.id.btnPostQuery:  

                //  1步:创建HttpPost对象  

                HttpPost httpPost = new HttpPost(url);  

                //  设置HTTP POST请求参数必须用NameValuePair对象  

                List<NameValuePair> params = new 

ArrayList<NameValuePair>();  

                params.add(new BasicNameValuePair

("bookname", etBookName.getText(). toString()));  

                //  设置HTTP POST请求参数  

                httpPost.setEntity(new 

UrlEncodedFormEntity(params, HTTP.UTF_8));  

                //  2步:使用execute方法发送HTTP 

POST请求,并返回HttpResponse对象  

                httpResponse = new DefaultHttpClient().

execute(httpPost);  

                if (httpResponse.getStatusLine().

getStatusCode() == 200)  

                {  

                    //  3步:使用getEntity方法获得返回结果  

                    String result = EntityUtils.toString

(httpResponse.getEntity());  

                    //  去掉返回结果中的"\r"字符,

否则会在结果字符串后面显示一个小方格  

                    tvQueryResult.setText(result.replaceAll("\r", ""));  

                }  

                break;  

        }  

    }  

    catch (Exception e)  

    {  

        tvQueryResult.setText(e.getMessage());  

    }  

转载于:https://www.cnblogs.com/qingblog/archive/2012/05/31/2528834.html

你可能感兴趣的文章
APIO2010 特别行动队
查看>>
Javascript语言精粹之Array常用方法分析
查看>>
屏蔽右键
查看>>
数值优化(三)
查看>>
连接池
查看>>
Retrofit 2.0使用
查看>>
win8 解析json数据模板 XMl解析数据
查看>>
Android原生代码与html5交互
查看>>
hibernate.cfg.xml配置
查看>>
将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载
查看>>
Python 爬取简单网页
查看>>
【机器学习】--xgboost初始之代码实现分类
查看>>
【强化学习篇】--强化学习从初识到应用
查看>>
获取图片
查看>>
过滤器
查看>>
软件工程个人作业02(四则运算)
查看>>
jQuery自动完成点击html元素
查看>>
关于随机数
查看>>
《世界是数字的》读书笔记
查看>>
LeetCode开心刷题第七天——13RomanToInteger14 Longest Common Prefix
查看>>