我们在做项目中一定少不了网络请求,如今非常多公司的网络请求这块好多都是使用一些比較好的开源框架,我项目中使用的是volley,如今讲讲一些volley主要的使用,假设想要具体的了解就要去看它的源代码了,如今贴代码讲一些它的使用了,

首先用一个类去封装下它的基本配置信息,以后须要变动的话,就直接在这里做改动,android最好能把每一个功能都独立出来,这样做改动的话 不会导致出现其它的bug,特别在有新员工进入到项目组中,分配任务沟通起来也省事,

ProtocolManager.java  它是一个单例

关键代码

private ProtocolManager(Context context){
initLoadBitmapConfig(context);
mQueue = Volley.newRequestQueue(context);
}

我们在调接口的时候 仅仅须要这样:

Map<String,String> param = new HashMap<String, String>();
param.put("checksum", 0+"");
ProtocolManager.getInstance().request(ProtocolEnum.URL_CONSTANCE_CONF_REGIONS,param,new RequestListener() {
@Override
public void onRequestSucess(String response) { if(!TextUtils.isEmpty(response)){
AllProvinceInfo provinceInfo = JsonHelper.json2Bean(response, AllProvinceInfo.class);
if(provinceInfo!=null&&provinceInfo.getRet()==1){
provinces = provinceInfo.getItems();
if(provinces!=null&&provinces.size()>0){
/**
* 把请求的json数据缓存到sd卡中
*/
DataManager.getInstance(UIUtils.getContext()).saveCacheStr(CACHE_AREA, response);
mHandler.sendEmptyMessage(AREA_CODE_SUCCESS);
}else {
mHandler.sendEmptyMessage(AREA_CODE_EMPTY);
}
}
}
}
@Override
public void onRequestFiled(String errorMsg) {
mHandler.sendEmptyMessage(AREA_CODE_FAIAL);
}
});
request中的方法
public  void request(ProtocolEnum protocolEnum,final Map<String,String> params
,final RequestListener listener){
int type = protocolEnum.type;
String url = protocolEnum.value;
switch (type) {
case ConfigManager.REQ_POST:
requestPost(url, params,listener, false);
break;
case ConfigManager.REQ_GET:
requestGet(url, params,listener, false);
break;
}
}

第一个參数是一个枚举,里面包括了这个url地址和请求方式

ProtocolEnum.java

public enum ProtocolEnum {
URL_PROFILE_INTRODUCTION_GET("user/profile/introduction",ConfigManager.REQ_GET);//下拉个人简单介绍 public String value;
public int type;
private ProtocolEnum(String value, int type) {
this.value = value;
this.type = type;
}
}

这就是怎样非常好的管理请求的URL,最后在Volley请求它会有个成功或者失败的回调,把json数据,这样以后我们新增一个接口,仅仅要copy,改一下返回的model对象就可以,这样开发效率大大的提高了

android 项目中使用到的网络请求框架以及怎样配置好接口URL的更多相关文章

  1. Android之封装好的异步网络请求框架

    1.简介  Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使 ...

  2. Android网络请求框架

    本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...

  3. 基于Retrofit+RxJava的Android分层网络请求框架

    目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...

  4. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  5. android翻译应用、地图轨迹、视频广告、React Native知乎日报、网络请求框架等源码

    Android精选源码 android实现高德地图轨迹效果源码 使用React Native(Android和iOS)实现的 知乎日报效果源码 一款整合百度翻译api跟有道翻译api的翻译君 RxEa ...

  6. android项目中配置NDK自动编译生成so文件

    1 下载ndk开发包   2 在android 项目中配置编译器(以HelloJni项目为例)  2.1 创建builer  (a)Project->Properties->Builder ...

  7. Android 项目中文件夹的说明与作用(转)

    (转自:http://blog.csdn.net/goodshot/article/details/11529731) Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. ...

  8. Android 网络请求框架android-async-http问题

    今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...

  9. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

随机推荐

  1. iOS 监听键盘变化

    //将要显示键盘 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowKeyboard: ...

  2. 一道试题引发的血案 int *ptr2=(int *)((int)a+1);

    某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下: int main(void) { int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&am ...

  3. 马踏棋盘问题-贪心(MATLAB&C++)

    原创文章,转载请注明:马踏棋盘问题-贪心(MATLAB&C++) By Lucio.Yang 1.问题描述 将马随机放在国际象棋的Board[0-7][0-7]的某个方格中,马按走棋规则进行移 ...

  4. 帝国cms7.0 内容页控制简介字数!

    帝国cms7.0 内容页有简介部分,使用以下代码可以有效控制字数限制! 下载类简介:<?=esub($navinfor[softsay],160)?> 文章类简介:<?=esub($ ...

  5. android 大小写转换

    private void toUpperCase(byte[] data, int start, int len) { int end = start + len; int dist = 'A' - ...

  6. 《Java4Android视频教程》学习笔记(一)

    此为个人的学习笔记,所以不具备太强的学习性,若有错误请谅解,如果能指出我的错误,我将万分感谢~ 一:java历史 java诞生 前身:Oak->java 曾经的名字C++(++--) 原意是在C ...

  7. dojo 学习笔记

    1  因为Dijit包括了一系列的UI组件,他绑定了4个支持的主题:nihilo, soria, tundra 和claro.每个主题包括了一系列的图片和CSS文件来控制组件的外观.CSS文件必须显示 ...

  8. filter angularjs 过滤器

    定义:从一个数组中根据某种规则返回新的数组. 语法: 在html中 {{ filter_expression | filter : expression : comparator}} 在javascr ...

  9. Enze fifth day(循环语句2)

    又是新的一周开始了,我还在云和学院继续学习.因为想要急切的想学会更多的知识,所以我有些急.可是我越急就越容易出错,这应该就是所谓的欲速则不达吧.这一周,我要重新把控好自己的一切,尽我最大的努力来学习! ...

  10. URAL 1203 Scientific Conference dp?贪心

    题目:click here 分明就是贪心怎么会在dp的专题 #include <bits/stdc++.h> using namespace std; typedef unsigned l ...