戈林哒哒 2021-07-16 22:42 采纳率: 50%
浏览 152
已结题

安卓前端用HttpURLConnect发送POST,后端接收到的值全部为空?

如题,在实现一个软件的登录和注册功能时,通过HttpURLConnection向后端发送post,但是后端获取到的参数的值全部为null。

前端代码

 JSONObject jsonObject = new JSONObject();
        jsonObject.put("username","baijing");
        jsonObject.put("password","dabaijing");
        jsonObject.put("sex","0");
        jsonObject.put("phone","201030");

        URL url = new URL("http://10.0.2.2:8080/rightway/register");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-type", "application/json;charset=UTF-8");
        conn.connect();

        String js = jsonObject.toString();
        OutputStream out = conn.getOutputStream();
        out.write(js.getBytes());
        out.flush();
        out.close();

        if (conn.getResponseCode() == 200){
            //使用字符流形式进行回复
            InputStream is = conn.getInputStream();
            //读取信息BufferReader
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder buffer = new StringBuilder();
            String readLine = "";
            while ((readLine = reader.readLine()) != null) {
                buffer.append(readLine);
            }
            is.close();
            reader.close();
            conn.disconnect();
            Looper.prepare();
            Toast.makeText(getContext(),buffer,Toast.LENGTH_SHORT).show();
            Looper.loop();
        }else{
            Looper.prepare();
            Toast.makeText(getContext(),"error",Toast.LENGTH_SHORT).show();
            Looper.loop();
        }

后端代码没有问题,用postman测试过,而且前端发送GET就能运行正常。求解惑!

req.setCharacterEncoding("utf-8");
        // 从前端的请求中获取参数
        String username = req.getParameter(Constant.USER_NAME);
        String password = req.getParameter(Constant.USER_PASSWORD);
        // 加密密码 如果前端加密了 后端也可不加密
        password = MD5Utils.stringToMD5(password);
        // 对前端传进来的性别表示做处理 0表示女 其他表示男
        String sex = req.getParameter(Constant.USER_GENDER);
        if (sex.equals("0")){ sex = "女"; }else{ sex = "男"; }
        String phone = req.getParameter(Constant.USER_PHONE);
        // 创建用户对象 方便插入数据库
        User user = new User(UUIDUtils.getUUID(),username,password,sex,phone);

        String pwd = userService.login(username, password); //检测用户名是否存在
        JSONObject json = new JSONObject();
        if (pwd == null){
            userService.register(user);
            json.put("code",3);
            json.put("description","注册成功!");
        }else {
            json.put("code",4);
            json.put("description","用户名已经存在!");
        }
        // 自定义工具类 将处理完的数据返回给前端
        WriteBackUtils.write(resp,json);

  • 写回答

2条回答 默认 最新

  • 戈林哒哒 2021-08-14 08:57
    关注

    由于前端传送的是json字符串,所以后端要用输入流接收,并转换为json格式,之后才能进一步操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月22日
  • 已采纳回答 8月14日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集