Android以请求参数来获取网络数据
2015-06-15 16:57
567 查看
【声明】此文转载自:http://blog.sina.com.cn/s/blog_703074da0101dqaq.html
——尊重作者,知识无价,交流无限!
取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子。
大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外。
1.HttpURLConnection的GET方式获取网络数据,get方式将参数放在url后一起传递过去,而且会被看到,一般不太安全,但是get方式只获取数据,不会更新数据。
步骤:
(1).建立URL,URL url=new URL(urltmp); //urltmp=http://96.0.57.141:8080/pmobile/NoticeInfoListQry.do?NoteType=1
(2)使用URL建立连接,HttpURLConnection urlcon=url.openConnection()
(3)连接,并获取数据流
InputStreamReader reader=new InputStreamReader(urlcon.getInputStream());
(4)使用IO流处理数据,这里以BufferedReader为例
BufferedReader bf=new BufferedReader(reader);
代码示例:
2.使用POST方式获取数据,post方式参数是放在请求的内容里面上送的,而不是放在url里面,相对安全一点,但是post有更新的操作,一般form表单提交的数据都是采用的post方式
步骤:
(1)建立URL,跟get方式一样 URL url=new URL(xxxxx);
(2)建立连接,HttpURLConnection urlcon=url.openConnection();
(3)配置属性,这里是最大的区别
urlcon.setDoOutput(true); //不设置dooutput属性,无法在内容上送数据
urlcon.setDoInput(true); //这个doinput属性可以不设置,默认是true
urlcon.setRequestMethod("POST"); //不设置这个方式也能拿到数据,并且注意POST要全大写
urlcon.setUseCaches(false);//post方式不能使用缓存,安全问题?
urlcon.setInstanceFollowRedirects(true);//
//如果不设置这个属性,那么上送的参数是对象时,有可能抛出异常
urlcon.setRequestProperty("Content-type","application/x-java-serialized-object");
urlcon.connect(); //连接必须在上面之后,也可以没有,因为调用OutputStream时默认连接一次
(4)使用DataOutputStream讲参数写入到上送的内容中
DataOutputStream data=new DataOutputStream(urlcon.getOutputStream());
String param="NoteType=1";
data.writeBytes(param);
data.flush();
data.close();
(5)获取数据流,跟get方式一样
InputStreamReader reader=new InputStreamReader(urlcon.getInputStream());
(6)处理数据
BufferedReader bf=new BufferedReader(reader);
代码如下:
3.使用HttpClient的get方法获取数据,一样将参数放在url后面上送
步骤:
(1).创建get请求,HttpGet request=new HttpGet(xxx);
(2).创建HttpClient对象,HttpClient clinet=new DefaultHttpClien();
(3).调用client的execute方法,获取返回数据,HttpResponse response=client.execute(request);
(4).获取数据, String res=EntityUtils.toString(response.getEntity());
代码如下:
4.使用HttpClient的post方式获取数据,参数是放在请求的内容中
(1).new一个HttpPost对象,HttpPost request=new HttpPost(xxx);
(2).创建参数键值对,只能使用规定格式NameValuePair,List param=new ArrayList();
(3).添加参数,param.add(new BasicNameValuePair("xxx",xxxx));
(4).将参数转换格式,HttpEntity entity=new UrlEncodeFormEntity(param,"UTF-8");
(5).将参数放到请求中,request.setEntity(entity);
(6).创建HttpClient,HttpClient client=new DefaultHttpClient();
(7).执行连接,获取返回内容,HttpResponse response=client.execute(request);
(8).获取数据,String res=EntityUtils.toString(response.getEntity());
注意:使用HttpURLConnection,只用调用java自身的jar包中的net方法,而使用HttpClient,要引入apache的jar包,调用里面的方法,不过这个是经过封装的,效率更高。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆转载请注明出处☞指尖飞落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
——尊重作者,知识无价,交流无限!
取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子。
大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外。
1.HttpURLConnection的GET方式获取网络数据,get方式将参数放在url后一起传递过去,而且会被看到,一般不太安全,但是get方式只获取数据,不会更新数据。
步骤:
(1).建立URL,URL url=new URL(urltmp); //urltmp=http://96.0.57.141:8080/pmobile/NoticeInfoListQry.do?NoteType=1
(2)使用URL建立连接,HttpURLConnection urlcon=url.openConnection()
(3)连接,并获取数据流
InputStreamReader reader=new InputStreamReader(urlcon.getInputStream());
(4)使用IO流处理数据,这里以BufferedReader为例
BufferedReader bf=new BufferedReader(reader);
代码示例:
2.使用POST方式获取数据,post方式参数是放在请求的内容里面上送的,而不是放在url里面,相对安全一点,但是post有更新的操作,一般form表单提交的数据都是采用的post方式
步骤:
(1)建立URL,跟get方式一样 URL url=new URL(xxxxx);
(2)建立连接,HttpURLConnection urlcon=url.openConnection();
(3)配置属性,这里是最大的区别
urlcon.setDoOutput(true); //不设置dooutput属性,无法在内容上送数据
urlcon.setDoInput(true); //这个doinput属性可以不设置,默认是true
urlcon.setRequestMethod("POST"); //不设置这个方式也能拿到数据,并且注意POST要全大写
urlcon.setUseCaches(false);//post方式不能使用缓存,安全问题?
urlcon.setInstanceFollowRedirects(true);//
//如果不设置这个属性,那么上送的参数是对象时,有可能抛出异常
urlcon.setRequestProperty("Content-type","application/x-java-serialized-object");
urlcon.connect(); //连接必须在上面之后,也可以没有,因为调用OutputStream时默认连接一次
(4)使用DataOutputStream讲参数写入到上送的内容中
DataOutputStream data=new DataOutputStream(urlcon.getOutputStream());
String param="NoteType=1";
data.writeBytes(param);
data.flush();
data.close();
(5)获取数据流,跟get方式一样
InputStreamReader reader=new InputStreamReader(urlcon.getInputStream());
(6)处理数据
BufferedReader bf=new BufferedReader(reader);
代码如下:
3.使用HttpClient的get方法获取数据,一样将参数放在url后面上送
步骤:
(1).创建get请求,HttpGet request=new HttpGet(xxx);
(2).创建HttpClient对象,HttpClient clinet=new DefaultHttpClien();
(3).调用client的execute方法,获取返回数据,HttpResponse response=client.execute(request);
(4).获取数据, String res=EntityUtils.toString(response.getEntity());
代码如下:
4.使用HttpClient的post方式获取数据,参数是放在请求的内容中
(1).new一个HttpPost对象,HttpPost request=new HttpPost(xxx);
(2).创建参数键值对,只能使用规定格式NameValuePair,List param=new ArrayList();
(3).添加参数,param.add(new BasicNameValuePair("xxx",xxxx));
(4).将参数转换格式,HttpEntity entity=new UrlEncodeFormEntity(param,"UTF-8");
(5).将参数放到请求中,request.setEntity(entity);
(6).创建HttpClient,HttpClient client=new DefaultHttpClient();
(7).执行连接,获取返回内容,HttpResponse response=client.execute(request);
(8).获取数据,String res=EntityUtils.toString(response.getEntity());
注意:使用HttpURLConnection,只用调用java自身的jar包中的net方法,而使用HttpClient,要引入apache的jar包,调用里面的方法,不过这个是经过封装的,效率更高。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆转载请注明出处☞指尖飞落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
相关文章推荐
- Servlet--HttpUtils类
- Servlet--HttpUtils类
- Servlet--HttpSessionBindingListener接口,HttpSessionBindingEvent类
- Servlet--HttpSessionBindingListener接口,HttpSessionBindingEvent类
- Servlet--HttpSession接口,HttpSessionContext接口,Cookie类
- Servlet--HttpSession接口,HttpSessionContext接口,Cookie类
- 2分法求 2^n 和 矩阵的n次方 转:http://blog.csdn.net/maiyuetong/article/details/6762206
- Linux服务器上监控网络带宽的18个常用命令
- 方向的选择,数据库?网络编程?其他?
- httpclient在抓取网页时出现速度慢的情况分析
- HTTP cookies 详解
- nginx 设置匿名http正向代理
- Android中判断网络是否处于连接状态
- centos网络配置
- wireshark抓包分析
- Android实用方法—HttpClient实现登录功能
- erlang http linux curl 返回空的问题
- Linux网络编程——tcp并发服务器(多线程)
- Android进阶—GridView加载网络图片
- http://www.cnblogs.com/miyosan/archive/2012/07/18/2596654.html