原文地址:https://blog.csdn.net/daisuki_ch/article/details/52651932
先搭建一个简单的服务器,具体方法见我另外一篇文章测试HttpUrlConnection请求时如何搭建一个简单的服务器
GET请求代码如下:
//网络请求是一个耗时操作,要在子线程里面开启
new Thread(new Runnable() {
@Override
public void run() {
try {
//get请求的url
URL url=new URL("http://192.168.2.135:8080/web/MyProject?username=zhangsan&password=123");
//url写法: 协议://IP地址:端口号/访问的文件
//协议一般是http,IP地址是要访问的IP地址,端口一般是8080,然后加上访问的是什么
//新建一个HttpURLConnection,从url开启一个连接
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置请求的模式
connection.setRequestMethod("GET");
//设置请求连接超时时间
connection.setConnectTimeout(5000);
//设置访问时的超时时间
connection.setReadTimeout(5000);
//开启连接
connection.connect();
InputStream inputStream=null;
BufferedReader reader=null;
//如果应答码为200的时候,表示成功的请求带了,这里的HttpURLConnection.HTTP_OK就是200
if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
//获得连接的输入流
inputStream=connection.getInputStream();
//转换成一个加强型的buffered流
reader=new BufferedReader(new InputStreamReader(inputStream));
//把读到的内容赋值给result
final String result=reader.readLine();
//子线程不能更新UI线程的内容,要更新需要开启一个Ui线程,这里Toast要在Ui线程
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
}
});
}
//关闭流和连接
reader.close();
inputStream.close();
connection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
POST请求是看不到URL里面的头文件内容的,把头文件内容从连接的输出流中写入,这样相对于GET请求会比较安全些
//网络请求是一个耗时操作,要在子线程里面开启
new Thread(new Runnable() {
@Override
public void run() {
try {
//get请求的url
URL url=new URL("http://192.168.2.135:8080/web/MyProject");
//url写法: 协议://IP地址:端口号/访问的文件
//协议一般是http,IP地址是要访问的IP地址,端口一般是8080,然后加上访问的是什么
//新建一个HttpURLConnection,从url开启一个连接
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置请求的模式
connection.setRequestMethod("POST");
//设置请求连接超时时间
connection.setConnectTimeout(5000);
//设置访问时的超时时间
connection.setReadTimeout(5000);
//设置连接允许写入
connection.setDoOutput(true);
//设置头文件内容
String data="username=zhangsan&password=123";
//获得连接的输出流
OutputStream outputStream = connection.getOutputStream();
//把头文件内容写入流中
outputStream.write(data.getBytes());
//开启连接
connection.connect();
InputStream inputStream=null;
BufferedReader reader=null;
//如果应答码为200的时候,表示成功的请求带了,这里的HttpURLConnection.HTTP_OK就是200
if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
//获得连接的输入流
inputStream=connection.getInputStream();
//转换成一个加强型的buffered流
reader=new BufferedReader(new InputStreamReader(inputStream));
//把读到的内容赋值给result
final String result=reader.readLine();
//子线程不能更新UI线程的内容,要更新需要开启一个Ui线程,这里Toast要在Ui线程
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
}
});
}
//关闭流和连接
reader.close();
inputStream.close();
connection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();