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

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 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?