您的位置:首页 > 理论基础 > 计算机网络

Android使用http协议的GET和POST方法!!!

2015-07-27 11:00 459 查看
前几天刚入职,研究了一下android里面的http协议的get和post请求:

Android里面有HttpClient可以用来访问网页的接口,下面来介绍HttpClient接口的使用,

1.GET:

/**
* GET请求
* @param path 网页路径
* @param params 参数
* @param values 参数的值
* @return JSON
*/
public static String doGet(String path,String[] params,String[] values){
try {
HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象
String url = URLParamUtil.praiseGetParams(path, params, values);//组合网页参数
HttpGet httpGet = new HttpGet(url);//创建GET对象
HttpResponse httpResponse = httpClient.execute(httpGet);//开始访问,用HttpResponse来收返回的数据
//如果连接成功,读取数据
if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
return readData(httpResponse.getEntity().getContent());//通过HttpResponse来获得对应的输出流
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

/**
* 解析URL
* @param path 路径
* @param params 参数
* @param values 值
* @return URL
*/
public static String praiseGetParams(String path,String[] params,String[] values){
String url = "";
//如果params和values为空就返回path
if(params==null||values==null){
url = path;
}
//如果参数和值的大小不同,抛出异常
else if(params.length != values.length){
try {
throw new Exception("参数异常");
} catch (Exception e) {
e.printStackTrace();
}
}
//正常解析情况
else{
url = path + "?";
for(int i=0;i<params.length;i++){
url += (params[i] + "=" + values[i] + "&");
}
//截取最后的一个字符"&"
url = url.substring(0, url.length()-1);
}
return url;
}

/**
* 通过字节输出流读取数据
* @param is
* @return JSON
*/
public static String readData(InputStream is){
BufferedReader br = new BufferedReader(new InputStreamReader(is));//将字节输出流转换为字符输出流
StringBuffer sb = new StringBuffer();
String line = "";
try {
line = br.readLine();
//循环读取数据
while(line != null){
sb.append(line + "\n");
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}


2.POST

/**
* POST请求
* @param path 网页路径
* @param params 参数
* @param values 参数的值
* @return JSON
*/
public static String doPost(String path,String[] params,String[] values){
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(path); //创建POST对象
//创建参数
List<NameValuePair> pairs = URLParamUtil.praisePostParams(params, values);
HttpEntity entity = new UrlEncodedFormEntity(pairs,"UTF-8");
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
// 请求成功开始读取数据
if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
return readData(httpResponse.getEntity().getContent());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

/**
* 解析POST参数
* @return pairs
*/
public static List<NameValuePair> praisePostParams(String[] params,String[] values){
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
NameValuePair pair = null;
//遍历数组创建参数
for(int i=0;i<params.length;i++){
pair = new BasicNameValuePair(params[i], values[i]);
pairs.add(pair);
}
return pairs;
}


注意:这些操作必须在线程中运行

源代码:https://github.com/alcaicai/HttpUtil
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: