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条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突