一、使用HttpURLConnection
首先需要获取到HttpURLConnection的实例——new出一个URL对象,传入目标的网络地址,调用openConnection()方法,如下:
URL url = new URL("http://www.baidu.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
得到HttpURLConnection实例后,设置HTTP请求所使用的方法,常用有两种,GET和POST。GET表示从服务器获取数据,POST相反,表示提交数据给服务器。
connection.setRequestMethod("GET"); //或POST
其他设置,
connection.setConnecTimeout(1000); //设置连接超时的毫秒数
connection.setReadTimeout(1000); //设置读取超时的毫秒数
调用getInputStream()方法获取服务器返回的输入流,并对输入流进行读取,
InputStream in = connection.getInputStream();
最后,调用disconnect()方法关闭此HTTP连接。
connection.disconnection();
如上是GET的简单用法,那么再来一个POST的完整例子吧。
//提交数据给服务器。获取输入流之前把药提交的数据写出即可
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
DataOutputStream out= new DataOutputStream(connection.getOutputStream());
out.writeBytes("username=admin&&&password=123456");//提交账号和密码
注意,要提交的数据要以键值对的形式存在,数据与数据之间用&隔开
LOL!
最后,来一个完整的例子,
private void sendRequestWithHttpUrlConnection() {
// 开启线程来发起网络请求 子线程
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");// SET表示希望从服务器那里获取数据,POST表示希望提交数据给服务器
connection.setConnectTimeout(8000);// 设置连接超时
connection.setReadTimeout(8000);// 读取超时的毫秒数
InputStream in = connection.getInputStream();// 获取服务器返回的输入流
/*
* 提交数据给服务器。获取输入流之前把药提交的数据写出即可
* connection.setRequestMethod("POST");
* DataOutputStream out= new DataOutputStream(connection.getOutputStream());
* out.writeBytes("username=admin&&&password=123456");
* 数据以键值对形式存在
*/
// 下面对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
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();// 将HTTP链接关闭掉
}
}
}
}).start();
}
LOL!
最后,来一个完整的例子,
private void sendRequestWithHttpUrlConnection() {
// 开启线程来发起网络请求 子线程
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");// SET表示希望从服务器那里获取数据,POST表示希望提交数据给服务器
connection.setConnectTimeout(8000);// 设置连接超时
connection.setReadTimeout(8000);// 读取超时的毫秒数
InputStream in = connection.getInputStream();// 获取服务器返回的输入流
/*
* 提交数据给服务器。获取输入流之前把药提交的数据写出即可
* connection.setRequestMethod("POST");
* DataOutputStream out= new DataOutputStream(connection.getOutputStream());
* out.writeBytes("username=admin&&&password=123456");
* 数据以键值对形式存在
*/
// 下面对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
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();// 将HTTP链接关闭掉
}
}
}
}).start();
}
LOL!
没有评论:
发表评论