wuruize888 2017-09-20 08:31 采纳率: 66.7%
浏览 1660
已采纳

java,URLDecoder.decode怎么处理数组?

java,URLDecoder.decode怎么处理数组?request.getParameterValues,这个传进去怎么弄?

比如URLDecoder.decode(request.getParameter("name"),‘utf-8’),这样可以接收1个值,如何通过这个接收数组数据呢?或者有没有其它办法

  • 写回答

2条回答 默认 最新

  • warmcore 2017-09-20 12:54
    关注

    楼主我自己写了个demo试了下,不清楚你的数组是由什么发送过来的,我用URL类发送post请求给一个web项目,方便起见只写了个简单的servlet。
    下面这是客户端代码:

        int[] a=new int[]{1,2,3,4,5,6,7};   //要发送的数组
            URL url=new URL("http://localhost/Servlet/Servlet");//创建连接
            URLConnection conn=url.openConnection();    //打开连接
            conn.setRequestProperty("accept", "*/*");           //下面是根据HTTP协议发送post请求所需要的一些请求头
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
               "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"
               + "61.0.3163.79 Safari/537.36");
    
            conn.setDoOutput(true);         //设置URL链接可以进行输出
            conn.setDoInput(true);          //设置可以获得输入
            OutputStream out=conn.getOutputStream();    
            ByteBuffer buffer=ByteBuffer.allocate(a.length*4);      //新建一个大小为数组的4倍大小的字节缓冲区,之所以4倍,因为int型占4byte
            for(int i:a){                                       //将数组内容写入缓冲区
                buffer.putInt(i);
            }
            out.write(buffer.array());                          //向输出流写入缓冲区转换出的byte[]
            out.flush();                                        //清空缓冲区,将数据发送 
    

    下面是服务器端获取数组:

            List<Byte> list=new ArrayList<Byte>();
            InputStream in=request.getInputStream();
            int i=0;
            while((i=in.read())!=-1){
                System.out.println(i);
            }
            /*byte[] b=new byte[30];
            ByteBuffer buffer=ByteBuffer.wrap(b);
            IntBuffer intBuffer=buffer.asIntBuffer();
            while(intBuffer.hasRemaining()){
                System.out.println(intBuffer.get());
            }*/ 
    

    从输入流获取数据,读出来的是字节,然后将字节转换成需要的值。第二种用ByteBuffer转换需要提前知道数据的大小

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

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来