网络技术-HttpURLConnection
2016-09-29 本文已影响239人
大话程序
使用HttpURLConnection发送HTTP请求
-
获取
HttpURLConnection
对象。一般只需new出一个URL对象,并传入目标的网络地址,然后调用openConnec()
方法URL url = new URL("http://www.baidu.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-
设置HTTP请求所使用的方法(
GET
和POST
)- GET 方式是表示从服务器那里获取数据
- POST 方式是表示希望提交数据给服务器
connection.setRequestMethod("POST");
-
私人订制连接(设置连接超时、读取超时的毫秒数以及服务器希望得到的一些消息头等)
//设置读取超时 connection.setReadTimeout(5000); //设置连接超时 connection.setConnectTimeout(5000);
-
调用
getInputStream()
方法获取到服务器返回的输入流InputStream inputStream = connection.getInputStream();
-
调用
disconnect()
方法将HTTP连接关闭掉connection.disconnect();
提交数据
GET方式
-
get方式提交的数据是直接拼接在url的末尾(键值对方式)
final String path = "http://192.168.1.104/Web/servlet/CheckLogin?name=" + name + "&pass=" + pass;
-
发送get请求
URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setReadTimeout(5000); conn.setConnectTimeout(5000); if(conn.getResponseCode() == 200){ InputStream inputStream = connection.getInputStream(); }
-
浏览器在发送请求携带数据时会对数据进行URL编码,我们写代码时也需要为中文进行URL编码
String path = "http://192.168.1.104/Web/servlet/CheckLogin?name=" + URLEncoder.encode(name) + "&pass=" + pass;
POST
-
post提交数据是用流写给服务器的
-
协议头中多了两个属性
- Content-Type: application/x-www-form-urlencoded,描述提交的数据的mimetype
- Content-Length: 32,描述提交的数据的长度
/*给请求头添加post多出来的两个属性*/ //进行URL编码 String data = "name=" + URLEncoder.encode(name) + "&pass=" + pass; //手动设置两个属性 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", data.length() + "");
-
设置允许打开post请求的流
conn.setDoOutput(true);
-
获取连接对象的输出流,往流里写要提交给服务器的数据
OutputStream os = conn.getOutputStream(); os.write(data.getBytes());