一、HTTP请求介绍
HTTP(Hyper Text Transfer Protocol)是一种用于传输超文本的协议,其中的超文本指的是一种可以包含图片、音频、视频等多种内容的文本形式。 HTTP请求通常由客户端向服务器发送请求,服务器返回相应的数据。
在Android上,我们可以使用HttpURLConnection和HttpClient这两个类来实现HTTP请求。其中,HttpURLConnection是Android 2.3及以后版本推荐使用的方式,而HttpClient则是Android 2.2及以前版本推荐使用的方式。本文将以HttpURLConnection为例进行讲解。
二、网络权限配置
在Android应用中进行网络请求之前,需要在AndroidManifest.xml文件中添加网络权限配置。
<uses-permission android:name="android.permission.INTERNET" />
三、HTTP GET请求
HTTP GET请求是发送请求到服务器,并获取服务器返回的数据。在HttpURLConnection中,我们可以通过设置请求方法为"GET",将我们的请求转换为GET请求。
下面是一个HTTP GET请求的示例代码:
//创建URL对象 URL url = new URL("http://www.example.com/api/v1/items"); //创建HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置请求方法为GET 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); } //关闭输入流和HttpURLConnection连接 reader.close(); connection.disconnect(); //将返回的数据打印出来 Log.d("MainActivity", response.toString());
四、HTTP POST请求
HTTP POST请求是向服务器提交数据。在HttpURLConnection中,我们可以通过设置请求方法为"POST",并发送一个包含我们要提交的数据的输出流,将我们的请求转换为POST请求。
下面是一个HTTP POST请求的示例代码:
//创建URL对象 URL url = new URL("http://www.example.com/api/v1/items"); //创建HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置请求方法为POST connection.setRequestMethod("POST"); //设置连接超时时间 connection.setConnectTimeout(8000); //设置读取超时时间 connection.setReadTimeout(8000); //允许输出流发送数据 connection.setDoOutput(true); //获取输出流并发送数据 OutputStream outputStream = connection.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream)); writer.write("key1=value1&key2=value2"); writer.flush(); writer.close(); //获取返回的数据 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); } //关闭输入流和HttpURLConnection连接 reader.close(); connection.disconnect(); //将返回的数据打印出来 Log.d("MainActivity", response.toString());
五、HTTP请求中的异常处理
在进行网络请求时,可能会出现各种异常,如网络连接断开,服务器无响应等。为了保证程序的健壮性,我们需要对这些异常进行相应的处理。
下面是一个对HTTP请求中的异常进行处理的示例代码:
try { //创建URL对象 URL url = new URL("http://www.example.com/api/v1/items"); //创建HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置请求方法为GET 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); } //关闭输入流和HttpURLConnection连接 reader.close(); connection.disconnect(); //将返回的数据打印出来 Log.d("MainActivity", response.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
六、总结
本文介绍了Android中HTTP请求的基础知识:网络权限配置、HTTP GET请求、HTTP POST请求以及HTTP请求中的异常处理。在进行Android开发时,网络请求是一项非常重要的技能,学会了HTTP请求的基础操作,我们就能够更加灵活地与服务器进行数据交互了。