首先不要忘记在AndroidManifest.xml中声明网络权限。
<uses-permission android:name="android.permission.INTERNET"/>
1.对于Apache找不到相关类的问题:需要把对应的包复制到apach的lib目录下。有mysql-driver.jar;json.jar
2.android中文显示乱码的问题:需要在服务器端设置header为编码为UTF-8,只能在header中设置,不能用setEncoding和contettype什么的。因为android是从header中读取编码的。
试了一下,服务器端用resp.setCharacterEncoding("utf-8");设置也可以显示中文。
3.android中volleyerror错误信息体body:在error.networkResponse.data中。查看源码即可发现。
(error.getMessage()获得的是android端的错误信息,error.networkResponse.data中的是服务器端的错误信息,若连接服务器都失败了,自然data信息为空)
4.使用Volley的jsonobjectrequest向服务器发送object请求:
JsonObjectRequest request2 = new JsonObjectRequest(Request.Method.POST, "http://192.168.1.14:8080/project/login_android", jsonObject,new Response.Listener<JSONObject>() , new Response.ErrorListener())
若第一个参数Method为GET,则第三个参数jsonobject为空,即使有数据也为空;
若第一个参数为post,则jsonobject才能携带数据。
5.服务器servlet获取从android发过来的json数据;
这个方法可以的到android端发过来的json数据
BufferedReader reader = req.getReader();
char[] bytes = new char[50];
reader.read(bytes);
System.out.print(bytes); //结果:{"username":"893288784"}
用这个方法返回的是null。。。。。。
req.getParameter(“username”)
而且getReader()和getParameter()和getInputStream()三个方法中只能用一个。在springmvc中框架自动调用了getParameter()所以不能再用另外两个。(参考自https://www.cnblogs.com/doit8791/p/7658814.html)
6.使用5中的方法读到的char数组转jsonobject:
先转String,再转JSON。。。。(T T)
String s = new String(bytes);
JSONObject date = JSONObject.fromObject(s);
7.web服务器向android返回json数据的方式
JSONObject jsonresponse = new JSONObject();
PrintWriter writer = response.getWriter();
jsonresponse.put("Result","Success");
writer.write(String.valueOf(jsonresponse));
莫名其妙以前能用的volley请求现在再试连不上自己的服务器了。。。。
url没错,网络开着。。。是安卓模拟器wifi开关关了。
8.之前写的StringRequest和JSONObjectRequest请求都是在doGET()中执行,但是用JSONArrayRequest请求再在doGET()中执行会报Stackoverflowerro错误。只能在doPOST()方法执行了。
9.在recycleview中添加长按菜单。