Java后台 如何获取 application/json的 字符串的形式的json数据

例如 httpClient  模拟前端 调用生成json字符串:

// json样式
            // 接收参数json列表  
            JSONObject jsonParam = new JSONObject();  
            jsonParam.put("appKey", "00002");
            jsonParam.put("userToken", "12");// 
            jsonParam.put("v", "1.0");// 
            jsonParam.put("jsonString", jo());//
            jsonParam.put("sign", sign);/
            System.out.println("json格式传参>>>>"+jsonParam.toString());
            
            StringEntity entitystring =
                     new StringEntity(jsonParam.toString(),"utf-8");//解决中文乱码问题    
            
            entitystring.setContentEncoding("UTF-8");    
            entitystring.setContentType("application/json");    
            post.setEntity(entitystring);    

 

那么  如果我们在后台这样接收:

@RequestMapping("/user/login")
    @ResponseBody
    public String login(String appKey, String userToken, String v, String jsonString, String sign)
            throws Exception {

你会发现并没有获取到 对应的参数内容 ,这样我们必须 对该 json 字符串进行绑定了:

@RequestMapping("/user/login")
    @ResponseBody
    public String login(@RequestBody JSONObject jsonObject)
            throws Exception {

System.out.println(jsonObject.getString("appKey")+"登录》》》"+appKey);

我们就获取了 内容了,spring mav 帮我 解析了转成了 json对象或者是  bean对象,绑定 bean 也可以.

总之就是获取不到  请求的参数的,当然我们可以使用比较原始的方法获取 前端给过来的数据:

StringBuffer sb = new StringBuffer() ; 
        InputStream is = request.getInputStream(); 
        InputStreamReader isr = new InputStreamReader(is);   
        BufferedReader br = new BufferedReader(isr); 
        String s = "" ; 
        while((s=br.readLine())!=null){ 
        sb.append(s) ; 
        } 
        String strint =sb.toString(); 
        System.out.println("流里面的数据》》》"+strint);

获取了我们再进行 转换处理等等。

 

这样 下面的方式 使用表单提交或者是 直接的 json 格式数据的提交,而不是 json字符串

@RequestMapping("/user/login")
    @ResponseBody
    public String login(String appKey, String userToken, String v, String jsonString, String sign)
            throws Exception {

httpClient的表单提交方式:

List<BasicNameValuePair> parameters=new ArrayList<BasicNameValuePair>();
            
            parameters.add(new BasicNameValuePair("appKey", "00002"));
            parameters.add(new BasicNameValuePair("userToken", "12"));//对应用户的 token
            parameters.add(new BasicNameValuePair("v", "1.0"));
            parameters.add(new BasicNameValuePair("jsonString", jo()));
            parameters.add(new BasicNameValuePair("sign", sign));
            
            
            
            System.out.println("签名》》》"+sign);
            System.out.println("加密串"+jo());
            
            
            post.setEntity(new UrlEncodedFormEntity(parameters,"UTF-8"));

转载于:https://my.oschina.net/ouminzy/blog/719801

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值