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

第一行代码总结:10网络:10.2使用HTTP协议访问网络10.2.1 使用HttpURLConnection10.2使用HTTP协议访问网络 工作原理: 客户端向服务器发出一条HTTP请求,服务器收

2015-11-27 17:50 866 查看
10.2使用HTTP协议访问网络

工作原理:

客户端向服务器发出一条HTTP请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

在Android上发送HTTP请求的方式一般有两种:

HttpURLConnection

HttpClient

10.2.1 使用HttpURLConnection

使用步骤:

1、获取URL对象,传入网络地址;

URL url = newURL("http://www.baidu.com");

2、获取HttpURLConnection对象。

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

3、设置HTTP请求所使用的方法。常用的方法有两个:GET/POST.

connection.setRequestMethod("GET");

4、进行一些自由的定制

connection.setConnectTimeout(8000); //设置连接超时时间
connection.setReadTimeout(8000); //设置读取超时时间

5、调用getInputStream()方法,获取到服务器返回的输入流:

InputStream in = connection.getInputStream();

6、对输入流进行读取:

//下面对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
//从高效缓冲输入流当中读取字符串并拼接
while((line = reader.readLine()) !=
null){
response.append(line);
}

7、最后调用disconnect()方法,将之歌HTTP连接关闭掉;

finally{
if(connection !=
null){
connection.disconnect();
}
}

8、声明网络权限:

uses-permissionandroid:name=”android.permission.INTERNET”

代码示例:

private
void
sendRequestWithURLConnection() {
// 开启线程来发起网络请求
new Thread(new Runnable(){

@Override
public
void
run() {
HttpURLConnection connection = null;
try {
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in =connection.getInputStream();
//下面对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
//从高效缓冲输入流当中读取字符串并拼接
while((line = reader.readLine()) !=
null){
response.append(line);
}
//将从网络当中读取到的内容返回给主线程:利用异步消息处理机制,handler
Message message = new Message();
message.what =
SHOW_RESPONSE;
//将服务器返回的结果存放到Message中
message.obj = response.toString();
handler.sendMessage(message);

} catch (Exception e) {
e.printStackTrace();
}finally{
if(connection !=
null){
connection.disconnect();
}
}
}

}).start();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: