个人技术博客
一. Volley框架
在进行和服务器交互的时候需要发送请求,发现了volley这个好用易上手的框架。volley是一个异步网络通信框架,它的优点在于轻量级、适用于量小但传送频繁的请求操作
搭建请求的第一步就是新建一个请求队列
RequestQueue queue = Volley.newRequestQueue(this)
在后续通信过程中,可以把每次的请求都加入到请求队列中,一次发送,减少资源的浪费,通常一个活动一个请求队列就够了。
每发送一条http请求,就需要创建一个请求对象,volley提供了StringRequest
、JsonRequest
、ImageRequest
等针对不同格式请求的对象,完成请求的用法大同小异,都需要最基本的三步:
1. 创建一个RequestQueue对象
2. 创建一个request对象
3. 将request对象添加到RequestQueue队列里去
以StringRequest为例,下面是它的基本结构
StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } });
但是在团队项目中我们需要传参数即要以post方式发送,并且约定发送和接收格式都是json,在尝试用JsonRequest 的时候我还是遇到了一些问题:
1.新建JsonRequest对象的时候 需要实例化一个JSONObject对象然后作为参数传进去,不能单纯地将那个设为null
JSONObject jsonObject=new JSONObject(map); JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.POST,"http://www.baidu.com", jsonObject, new Response.Listener<JSONObject>()
RequestQueue queue = Volley.newRequestQueue(this)
这个this指活动上下文,我在写的时候写成了getApplicationContext()
虽然验证无误但是后来发现这个指整个app的上下文,如果简单粗暴地这么写容易在后续创建多个请求队列时发生错误,于是改成了login1Activity.this
当前活动的 上下文。- 加入队列后突然发现不知道它是什么时候发送这些请求的,然后看了源码,发现在创建请求队列的方法里封装了
start()
函数,在外面再次写start()也可能会出现错误。 - 以json格式传递参数在这里显得不是很友好,需要先将数据放入map对象,再将map对象转为jsonObject对象(这里真是卡了好久...)
Map<String,String> map=new HashMap<String, String>(); //以json串方式提交参数 map.put("phonenum",myName); map.put("password",myPwd); JSONObject jsonObject=new JSONObject(map);
参考来源:
http://blog.csdn.net/guolin_blog/article/details/17482095
http://blog.csdn.net/nugongahou110/article/details/46876473
二. 关于Android Studio
额嗯,使用as的时候真是出现了无数的问题,开始很多都是因为gradle文件不同步导致的,解决过程中又因为很多时候的不仔细导致在上面耗了大量时间。
导入项目卡死的话,最大的原因就是gradle文件不一致,这时最好的办法:科学上网
条件不允许的话,可以到这个网站http://services.gradle.org/distributions/ 去下载对应的版本,然后放到如下的目录C:\Users\用户名\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst
(a4w5fzrkeut1ox71xslb49gst这个文件夹名称因人而异)
或者是将当前版本改为自己的gradle版本号
这里有个简单粗暴的方法就是将自己本地的一个项目里的和gradle有关的文件都替换掉要打开项目 的gradle文件 再导入项目,导入后会有提示下载一些工具只要按提示来即可
还有一点是导入项目的时候要选择build.gradle 打开,导入库 的时候要选择项目名称打开,这一点虽然后来我在导项目的时候选择名称好像也没什么问题。。。不太懂
安装完as后我的c盘就有点紧脏,额昂这里可以配置一下android studio的缓存文件夹,这里贴个教程 http://blog.csdn.net/qiujuer/article/details/44160127