httpResponse的getEntity为空,获取了这个数据在解析的时候出现了String不能转换成json对象

在Android开发中,遇到httpResponse的getEntity为空导致JSON转换失败的错误。问题根源在于后台返回的数据包含HTML标签等脏数据。解决办法是在Struts中使用内置的JSON结果类型,确保返回干净的JSON数据。通过配置action,如:<action name="getflowerinfo" class="getFlowerInfoAction" method="flowerinfo"><result name="flowerinfo" type="json"><param name="root">flowerlist</param></result></action>,可以避免这类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:


代码:

 if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
                    //将响应请求的对象转换成实体形式的字符形式的参数
                    result= EntityUtils.toString(response.getEntity(), "utf-8");
                    System.out.println("result值:"+result.toString());
                    if((result.toString()).equals("error")||result==null||(result.toString()).length()==0){
                        Message msg=new Message();
                        msg.obj="sorry,用户名不存在,去注册吧~";
                        handler.sendMessage(msg);
                    }else{
                    //创建一个json对象
                    JSONObject jsonObject=new JSONObject(result.toString());
                        //将从后台获取的数据放到封装对象里面
                    User userinfo = new User();
                    userinfo.setUserid(jsonObject.getInt("userid"));
                    userinfo.setUsername(jsonObject.getString("username"));
                    userinfo.setUserpwd(jsonObject.getString("userpwd"));
                    userinfo.setUsernumber(jsonObject.getString("usernumber"));
                    userinfo.setUserorders(jsonObject.getString("userorders"));
                    userinfo.setUserimage(jsonObject.getString("userimage"));
                    userinfo.setUseraddress(jsonObject.getString("useraddress"));
                    userinfo.setUsersign(jsonObject.getString("usersign"));
                        Message msg=new Message();
                        msg.obj="success";
                        handler.sendMessage(msg);
                    }
                }else{
                    Message msg=new Message();
                    msg.obj="INTERNETerror";
                    handler.sendMessage(msg);
                }

解决方法:

是因为后台stucts返回数据时加入了html等等标签,出现了脏数据。

后来用了structs自带json格式的方法:

public String flowerinfo() {

//1--表示季节,2--表示节日,3--表示手工花,4--表示用途,5--表示颜色,6--表示价格
flowerlist=flowerDAO.findByFcategory(cateval);
return "flowerinfo";
}

flowerlist要get,set.

structs中配置:

<action name="getflowerinfo" class="getFlowerInfoAction" method="flowerinfo">
<result name="flowerinfo" type="json">
<param name="root">flowerlist</param>
</result>
</action>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值