客户端上:
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);

PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(sendByte);   //sendByte是一个10K的字节byte[];
out.flush();
out.close();服务器端的Serlvet:
ServletInputStream input = request.getInputStream();
input.read(readData);以上是我的代码,在Serlvet端上怎样也收不到数据,不知要怎样写?

解决方案 »

  1.   

    ....java 的con是基于连接的,你都关闭了流还怎么接受了??
    另外:
        你的connection是持久化对象吗?就是说是javabean吗?我一般是写成
    public class ConnData{
      public InputStream getInputStream(){}
      public void closeAll(){}
    }然后实例化,调用方法,最后调用关闭。
    其实我也是新手的说,菜鸟一个的说。你看看吧....
      

  2.   

    我上面放在servlet的那个方法中的,你放在service中试试看
      

  3.   

    ServletInputStream s=request.getInputStream();
    int i =0;
    int size=s.available();
    while((i=s.read())!=-1){
    System.out.print((char)i);
    }
      

  4.   

    保证你的servlet中含有
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            doGet(request, response);
        }
    因为客户端是post数据,而不是get.
    下面我给你一个实例:
    客户端:
            URL url = new URL("http://localhost:8080/test/accept");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            
            
            BufferedOutputStream out = new BufferedOutputStream(conn.getOutputStream());
            byte[] bytes = new byte[]{1,2,3,4,5};
            out.write(bytes);
            out.flush();
            out.close();        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line=null;
            while((line=in.readLine())!=null){
                System.out.println(line);
            }        in.close();
    -------------------------------------------------------------
    服务器端:
    //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            PrintWriter out = response.getWriter();
            BufferedInputStream in = new BufferedInputStream(request.getInputStream());
            byte[] bytes=new byte[1024];
            int len = 0;
            while((len=in.read(bytes))!=-1){
                System.out.println(bytes);
            }
            System.out.println(bytes);
            out.print("ok");
            out.close();
        }    //Process the HTTP Post request
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            doGet(request, response);
        }这个例子我已经测试通过。尽量学会使用装饰类BufferedReader,BufferedInputStream,BufferedOutputStream.
    可以提高性能。他们继承自Reader,Stream,并包含一个Reader,Stream,对其进行装饰,提高性能,但对外接口不变。
      

  5.   

    输出结果为:
    客户端:ok
    服务器端:输出字节数组的地址,没什么用,你可以改一下,让他输出字节数组的内容看看。
    while((len=in.read(bytes))!=-1){
                System.out.println(bytes);
            }
            System.out.println(bytes);
    如果进入循环,则bytes中的数据全部来自网络,如果没有进入循环则bytes中的0到len的数据来自网络,其余数据无效。