Android学习使用HTTP协议访问网络
2014-12-25 14:14
1201 查看
使用HttpURLConnection
1.首先要获得HttpURLConnection实例,一般需要new出一个URL对象并传入目标的网络地址,然后调用一下openConnection()方法。
2.得到HttpURLConnection实例后,可以设置一下请求方式
还可以进行一些定制,如连接超时,读取超时的毫秒数
3.再调用getInputStream()方法就可以获取到服务器返回的输入流,剩下的任务就是对输入流进行读取
4.最后可以调用disconnect()方法将这个HTTP连接关掉
一个完整的实例
使用HttpClient
1.HttpClient是一个接口无法创建实例,通常情况下会创建一个DefaultHttpClient实例
2.如果想发起一条请求GET请求,可创建一个HttpGet对象,并传入目标网络的地址,然后调用HttpClient的execute()方法
执行execute()方法后,会返回一个HttoResponse对象,服务器的信息都包含在里面,通常先取出服务器返回的状态码,如果等于200说明请求和响应都成功了
完整实例如下:
1.首先要获得HttpURLConnection实例,一般需要new出一个URL对象并传入目标的网络地址,然后调用一下openConnection()方法。
<span style="font-family:Microsoft YaHei;font-size:14px;">URL url = new URL("http://www.baidu.com"); connection =(HttpURLConnection)url.openConnection();</span>
2.得到HttpURLConnection实例后,可以设置一下请求方式
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.setRequestMethod("GET");</span>
还可以进行一些定制,如连接超时,读取超时的毫秒数
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.setConnectTimeout(8000); connection.setReadTimeout(8000);</span>
3.再调用getInputStream()方法就可以获取到服务器返回的输入流,剩下的任务就是对输入流进行读取
<span style="font-family:Microsoft YaHei;font-size:14px;">InputStream in =connection.getInputStream();</span>
4.最后可以调用disconnect()方法将这个HTTP连接关掉
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.disconnect();</span>
一个完整的实例
<span style="font-family:Microsoft YaHei;font-size:14px;"> public static void sendHttpRequest(final String address,final HttpCallbackListener listener){ new Thread(new Runnable() { @Override public void run() { HttpsURLConnection connection = null; try { URL url = new URL(address); connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder respone = new StringBuilder(); String line; while( (line =reader.readLine())!= null){ respone.append(line); } if (listener !=null){ listener.onFinish(respone.toString()); } } catch (Exception e) { if (listener != null){ listener.onError(e); } }finally{ if (connection != null){ connection.disconnect(); } } } }).start(); }</span>
使用HttpClient
1.HttpClient是一个接口无法创建实例,通常情况下会创建一个DefaultHttpClient实例
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpClient httpClient = new DefaultHttpClient();</span>
2.如果想发起一条请求GET请求,可创建一个HttpGet对象,并传入目标网络的地址,然后调用HttpClient的execute()方法
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpGet httpGet = new HttpGet("http://www.baidu.com");</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpResponse httpResponse = httpClient.execute(httpGet); </span>
执行execute()方法后,会返回一个HttoResponse对象,服务器的信息都包含在里面,通常先取出服务器返回的状态码,如果等于200说明请求和响应都成功了
<span style="font-family:Microsoft YaHei;font-size:14px;">if (httpResponse.getStatusLine().getStatusCode()== 200){</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"> </span>//返回成功</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">}</span>在if内部取出服务器返回的具体内容,可调用getEntity()方法获取到一个HttpEntity实例,再用EntityUtils.toString()方法将HttpEntity转换为字符串
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity,"utf-8");</span>
完整实例如下:
<span style="font-family:Microsoft YaHei;font-size:14px;"> private void sendRequestWithHttpClient(){ new Thread(new Runnable(){ public void run(){ try{ HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://192.168.1.102/get_data.xml"); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode()== 200){ HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity,"utf-8"); Message message = new Message(); message.what = SHOW_RESPONSE; message.obj = response.toString(); handler.sendMessage(message); } }catch (IOException e){ e.printStackTrace(); } } }).start(); }</span>
相关文章推荐
- 【Android 学习笔记】 之 使用HTTP协议访问网络
- android学习二十(使用HTTP协议访问网络)
- Android使用Http协议访问网络
- Android使用Http协议访问网络——HttpURLConnection(无解析)
- Android使用HTTP协议访问网络——HttpClient
- Android入门-使用Http协议访问网络
- Android学习--使用url访问网络资源
- Android使用http协议访问网络
- Android使用Http协议访问网络
- Android使用HTTP协议访问网络——HttpClient
- android中使用http协议访问网络
- Android之使用HTTP协议访问网络
- Android使用Http协议访问网络——HttpConnection
- Android学习指南之三十:使用URLConnection和HttpClient访问网络的方法
- android网络技术-使用 HTTP协议访问网络
- Android使用HTTP协议访问网络
- Android中使用http协议访问网络
- Android网络编程之使用HTTP访问网络资源
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 关于android真机无法测试http协议网络访问 而android虚拟机可以