概述
半个月前,让给公司一个新模块建个项目,到现在这个项目结构还是有很多不足的地方。比如说数据的本地缓存还有挺多的问题。
今天后台服务器的接口崩的很厉害,完全取不到数据,任务里还有一个小模块的UI设计跟数据也不匹配只能先放着了 ,来写几篇blog吧
说了点废话,开始主题吧:
如今移动APP项目中几乎没有不用网络的吧,所以一个获取json数据的网络工具类必不可少。
而网络请求工具类的功能就是封装 几个请求的方法,一般常用的有get,post等。(delete及其他都没用过……)
POST请求(常用):
/**
* 用来获取服务端响应信息
*
* @param url
*
请求服务端地址
* @param params
*
请求参数:以键值对方式保存
* @return String 返回对应的JSON字符串
* @throws
*/
public static String getJSONData(String url, HashMap<String, String> params) {
HttpPost post = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
// 请求超时
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, StringConstant.CONNECTION_TIME_OUT);
// 读取超时
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, StringConstant.READ_TIME_OUT);
ArrayList<NameValuePair> paramPairs = new ArrayList<NameValuePair>();
if (params != null && !params.isEmpty()) {// 判断params请求参数是否为空
for (Entry<String, String> entry : params.entrySet()) {// 如果不为空的话,
// 需要迭代,加入到ArrayList<NameValuePair>对象中
paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
try {
post.setEntity(new UrlEncodedFormEntity(paramPairs,StringConstant.HTTP_UTF8));
} catch (UnsupportedEncodingException e) {
Log.d("HttpDataUtilexception", e.getMessage());
return null;
}
try {
HttpResponse response;
// 执行请求,获取响应
response = httpclient.execute(post);
String inf = "";
int code = response.getStatusLine().getStatusCode();
Log.d("code", code+"");
if (code == StringConstant.RESPONSE_CODE) {// 判断响应状态码
inf = EntityUtils.toString(response.getEntity());
//
Log.d("result", "result:" + inf);
return inf;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
POST请求有很多优点,一来它很少产生乱码,它用实体保存你给的参数,也要比GET方法安全得多。但是有一些请求是不兼容POST的,所以GET方法还是有必要的。
/**
* get 请求
* @param url
* @param params
* @return
*/
public static String HttpDataforGet(String url, HashMap<String, String> params) {
HttpClient httpclient = new DefaultHttpClient();
// 请求超时
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, StringConstant.CONNECTION_TIME_OUT);
// 读取超时
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, StringConstant.READ_TIME_OUT);
StringBuffer sbu = new StringBuffer();
if (params != null && !params.isEmpty()) {// 判断params请求参数是否为空
for (Entry<String, String> entry : params.entrySet()) {// 如果不为空的话,
try {
//将参数转化为utf-8,并将 +号 转化回 =号
sbu.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8").replace("+", "%2B")).append("&");
}catch(Exception e) {
e.printStackTrace();
}
}
url += sbu.toString();
}
try {
HttpGet get = new HttpGet(url);
HttpResponse response;
// 执行请求,获取响应
response = httpclient.execute(get);
String inf = "";
int code = response.getStatusLine().getStatusCode();
Log.d("code", code+"");
if (code == StringConstant.RESPONSE_CODE) {// 判断响应状态码
inf = EntityUtils.toString(response.getEntity());
//
Log.d("result", "result:" + inf);
return inf;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
最后
以上就是天真红酒为你收集整理的Android网络请求工具类的全部内容,希望文章能够帮你解决Android网络请求工具类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复