您的位置:首页 > 理论基础 > 计算机网络

android获取网络数据

2016-06-29 16:54 363 查看
网络通信,发送请求有两种方式,GET和POST。

get方式将参数放在url后一起传递过去,而且会被看到, 一般不太安全‘;get请求参数长度有限制。

post方式参数是放在请求的内容里面上送的,而不是放在url里面,相对安全一点。

1.HttpURLConnection的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.HttpURLConnection的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).获取数据, if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
string = EntityUtils.toString(response.getEntity());
  }

4.使用HttpClient的post方式获取数据,参数是放在请求的内容中

(1).new一个HttpPost对象,HttpPost request=new HttpPost(xxx);

(2).创建参数键值对,只能使用规定格式NameValuePair,List<NameValuePair> param = new ArrayList<NameValuePair>();

(3).添加参数,param.add(new BasicNameValuePair("xxx",xxxx));

(4).将参数转换格式,HttpEntity entity=new UrlEncodedFormEntity(param,"UTF-8");

(5).将参数放到请求中,request.setEntity(entity);

(6).创建HttpClient,HttpClient client=new DefaultHttpClient();

(7).执行连接,获取返回内容,HttpResponse response=client.execute(request);

(8).获取数据,if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
string = EntityUtils.toString(response.getEntity());
  }
  
  

注意:使用HttpURLConnection,只用调用java自身的jar包中的net方法,易扩展,

而使用HttpClient,要引入apache的jar包,调用里面的方法,不过这个是经过封装的,效率更高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 网络 通信