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

安卓前端用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日

悬赏问题

  • ¥60 Python如何后台操作Vmwake虚拟机键鼠
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容