android—获取网络数据

取网络数据主要靠发交易(或者说请求,接口等),而这些交易由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());

时间: 2024-12-31 19:11:17

android—获取网络数据的相关文章

Android -- 获取网络数据并将数据存到本地数据库中

public static final int downloadDone = 1; // 用户model数组 ArrayList<Loginer> loginers = new ArrayList<>(); // hander Handler downloadLoginerHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case downlo

Android中获取网络数据时的分页加载

//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神指教 public class Fragment1 extends Fragment{               //加载的第几页        private int index = 0;            private List<News> news=new ArrayList<

Android获取网络状态

Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html Overview 在做Android app的时候,网络的状态可能会经常的变化,当用户当前没有网络的时候,我们要保证程序不崩溃,而在当用户使用流量的话,则需要确保,在进行耗流量的操

Swift - 异步获取网络数据封装类

使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpController.swift (数据获取封装类,结果处理协议) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import UIKit //自定义http协议 protocol HttpProto

JSON异步获取网络数据

//定义一个方法来获取网络数据,接受参数为网址 func onSearch(url: String){ //定义一个NSURL var nsUrl: NSURL = NSURL(string: url)! //定义一个NSURLRequest var request: NSURLRequest = NSURLRequest(URL: nsUrl) //异步获取数据 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperatio

Android 读取网络数据

通过HttpResponse  实现 首先在AndroidManifest中配置允许网络访问    <uses-permissionandroid:name="android.permission.INTERNET"/> 然后实现代码 示例代码如下 String url = "http://www.baidu.com"; HttpGet request = new HttpGet(url); try { HttpResponseresponse = ne

获取网络数据

紧接着上次的工程,这次我们要从网络上获取音乐数据,并将获取到的数据呈现在做好的UI上. 由于网络获取数据涉及到http请求,获取到的JSON数据要进行数据解析,这两步要分别用到两个第三方库: 获取数据前先新建一个类,我们将使用该类控制数据的获取: import UIKit//该类用于控制数据的获取class HTTPController:NSObject{    //定义一个代理    var delegate:HttpProtocol?    //接收网址,回调代理的方法传回数据    fun

android 获取网络类型名称2G 3G 4G wifi

首先工程Manifest文件要引用: 1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //获取网络服务 1 public static String getNetworkTypeName(Co

Android获取网络类型

public static final String NETWORK_CLASS_UNKNOWN = "unknown"; public static final String NETWORK_CLASS_WIFI = "wifi"; public static final String NETWORK_CLASS_2_G = "2g"; public static final String NETWORK_CLASS_3_G = "3