Android中HttpURLConnection的基础
2015-08-23 21:19
555 查看
HttpURLConnection介绍:
HttpURLConnection是URLConnection的子类,所以同样能为URL指定的网站发送Get或Post请求。另外,该类增加了Http协议,所以功能更完善。并且它在URLConnection的基础上增加了一些更实用的方法:
(1)int getResponseCode(); //获得服务器的响应代码
(2)String getResponseMessage(); //获取服务器的响应消息
(3)String getRequestMethod(); //获取发送请示的方法
(4)void setRequestMethod(String method); //设置发送请求的方法
使得访问Http服务器时,使用HttpURLConnection比使用URLConnection方便的多。
在HttpURLConnection中,请求的类别分为二类,GET和POST请求。两者的区别在于:
(1)get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet;
(2)post与get的不同之处在于post的参数不是放在URL字串里面,而是放在输出流中。
get和post访问的步骤如下:
GET方式请求:
1.创建URL对象,URL中要可包含请求参数
URL url = new URL(“http://服务器IP地址:端口号/项目名/test.do?name=”范杰”&age=18);
2.创建HttpURLConnection对象,打开与URL之间的连接
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
3.设置请求方式为GET
conn.setRequestMethod(“GET”);
4.得到输入流,通过输入流得到服务器的响应数据
InputStream in = conn.getInputStream();
Get请求示例代码:
POST方式请求:
1.创建URL对象,URL中不带参数
URL url = new URL(“http://服务器端IP地址:端口号/项目名/test.do”);
2.创建HttpURLConnection对象,打开与URL之间的连接
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
3.设置请求方式为POST
conn.setRequestMethod(“POST”);
4.发送POST请求必须设置如下两行:
conn.setDoOutput(true);
conn.setDoInput(true);
5.获得URLConnection对象的输出流
PrintWriter out = new PrintWriter(conn.getOutputStream()) ;
6.通过输出流,发送请求参数
out.print(“name=fanjie&age=18”);
out.flush();
7.获得数据输入流,然后可以通过输入流得到相应数据了
InputStream in = conn.getInputStream();
Post请求示例代码:
注意:
1.子线程中不能修改界面,只能在主线程中修改界面。另外,一个线程对象只能开一次子线程。
2.在Android4.0后所有网络方面的操作都不能再使用主线程,而变成了在获取网页响应字符串时本文代码使用了Thread,在下载图片时使用了AsyncTask,可以对比其使用的异同。很明显,AsyncTask更加方便。可以在onPreExecute和onPostExecute方法里很方便的做主线程UI以前做的事。
HttpURLConnection是URLConnection的子类,所以同样能为URL指定的网站发送Get或Post请求。另外,该类增加了Http协议,所以功能更完善。并且它在URLConnection的基础上增加了一些更实用的方法:
(1)int getResponseCode(); //获得服务器的响应代码
(2)String getResponseMessage(); //获取服务器的响应消息
(3)String getRequestMethod(); //获取发送请示的方法
(4)void setRequestMethod(String method); //设置发送请求的方法
使得访问Http服务器时,使用HttpURLConnection比使用URLConnection方便的多。
在HttpURLConnection中,请求的类别分为二类,GET和POST请求。两者的区别在于:
(1)get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet;
(2)post与get的不同之处在于post的参数不是放在URL字串里面,而是放在输出流中。
get和post访问的步骤如下:
GET方式请求:
1.创建URL对象,URL中要可包含请求参数
URL url = new URL(“http://服务器IP地址:端口号/项目名/test.do?name=”范杰”&age=18);
2.创建HttpURLConnection对象,打开与URL之间的连接
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
3.设置请求方式为GET
conn.setRequestMethod(“GET”);
4.得到输入流,通过输入流得到服务器的响应数据
InputStream in = conn.getInputStream();
Get请求示例代码:
POST方式请求:
1.创建URL对象,URL中不带参数
URL url = new URL(“http://服务器端IP地址:端口号/项目名/test.do”);
2.创建HttpURLConnection对象,打开与URL之间的连接
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
3.设置请求方式为POST
conn.setRequestMethod(“POST”);
4.发送POST请求必须设置如下两行:
conn.setDoOutput(true);
conn.setDoInput(true);
5.获得URLConnection对象的输出流
PrintWriter out = new PrintWriter(conn.getOutputStream()) ;
6.通过输出流,发送请求参数
out.print(“name=fanjie&age=18”);
out.flush();
7.获得数据输入流,然后可以通过输入流得到相应数据了
InputStream in = conn.getInputStream();
Post请求示例代码:
注意:
1.子线程中不能修改界面,只能在主线程中修改界面。另外,一个线程对象只能开一次子线程。
2.在Android4.0后所有网络方面的操作都不能再使用主线程,而变成了在获取网页响应字符串时本文代码使用了Thread,在下载图片时使用了AsyncTask,可以对比其使用的异同。很明显,AsyncTask更加方便。可以在onPreExecute和onPostExecute方法里很方便的做主线程UI以前做的事。
相关文章推荐
- TCP/IP SOCKET HTTP及HTTPS之间的关系及各自特性之总结
- 【javascript】Ajax核心-XMLhttpRequest
- 与TCP/IP协议的初次见面(一)
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- Acunetix Web Vulnerability ScannerV10.0
- linux网络命令
- HTTP请求中如何选择Get和Post方式
- 本地服务器网络连接配置
- HttpGet/HttpPost/HttpClient介绍
- HttpServletRequestWrapper,HttpServletResponseWrapper在过滤器Filter中的使用
- TCP/IP-TCP
- POJ 3281 [网络流dinic算法模板]
- http:关于长连接和分块传输
- TCP协议增强器的应用实践
- 深度学习-神经网络1
- 黑马程序员-----网络编程1
- JAVA网络编程叶存菜鸟TCP程序设计笔记echo程序经典案列
- 黑马程序员----HTTP 方法:GET 对比 POST
- 网络地址转换
- charles工具使用-抓取https请求