向Web站点发送GET请求、POST请求,并从Web站点取得响应
2015-09-07 23:05
435 查看
建议在查看以下代码之前,先去了解有关HTTP请求和HTTP响应的相关知识(如请求与响应的内容)。
这里提供了一个发送GET、POST请求的工具类,源代码摘抄自 《疯狂 Android讲义(第2版)》一书。主要是为了方便查阅,在此记录。
这个工具类,我们可以配合我们自己所写的服务器端文件来操作数据库实现Android应用的联网操作。
GetPostUtil.java
这里提供了一个发送GET、POST请求的工具类,源代码摘抄自 《疯狂 Android讲义(第2版)》一书。主要是为了方便查阅,在此记录。
这个工具类,我们可以配合我们自己所写的服务器端文件来操作数据库实现Android应用的联网操作。
GetPostUtil.java
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class GetPostUtil { /* * 向指定URL发送GET方法的请求 * @param url 发送请求的URL * @param params 请求参数,请求参数应该是name1=value1&name2=value2的形式。 * @return URL所代表远程资源的响应 */ public static String sendGet(String url, String params) { String result = ""; BufferedReader in = null; try { String urlName = url + "?" + params; URL readUrl = new URL(urlName); //打开和URL之间的连接 URLConnection conn = readUrl.openConnection(); //设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); //建立实际的连接 conn.connect(); //获取所有响应头字段 Map<String, List<String>> map = conn.getHeaderFields(); //遍历所有的响应头字段 for(String key : map.keySet()) { System.out.print(key + "--->" + map.get(key)); } //定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while((line = in.readLine()) != null) { result += "\n" + line; } } catch (Exception e) { System.out.println("发送GET请求出现异常! " + e); e.printStackTrace(); } //使用finally块来关闭输入流 finally { try { if(in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } /** * 向指定URL发送POST方法的请求 * @param url 发送请求的URL * @param params 请求参数,请求参数应该是 name1=value1&name2=value2的形式。 * @return URL所代表远程资源的响应 */ public static String sendPost(String url, String params) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); //打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); //设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); //发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); //获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); //发送请求参数 out.print(params); //flush输出流的缓冲 out.flush(); //定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while((line = in.readLine()) != null) { result += "\n" + line; } } catch(Exception e) { System.out.println("发送POST请求出现异常!" + e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally { try { if(out != null) { out.close(); } if(in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } }
相关文章推荐
- poj 1258 Agri-Net 最小生成树
- Nginx+lua环境搭建
- 微信公共平台开发4 .net
- 关于C++表达式求值的困惑
- react-native试玩(13)-选择控件
- 华为上机笔试题
- 容斥定理
- 项目制图的简单准备
- sublime的使用
- poj1984 带权并查集
- 【趟坑】公共引用的jar包 pom的配置方法
- Java记录 -23- equals方法和双等号解析
- Objective-C Runtime 运行时(二):成员变量与属性
- 为什么支持Oauth2.0 的邮箱更安全?
- 为什么支持Oauth2.0 的邮箱更安全?
- uva 11478 - Halum(BellmanFold)
- php中日期时间函数date()用法总结
- Python 读取csv的某列
- hdu 1058 humble number
- Ubuntu下 Redis安装