android+java web问题记录

 

首先不要忘记在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);

 

(参考https://blog.csdn.net/baidu_32739019/article/details/78676042?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

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中添加长按菜单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值