public byte[] processInput(InputStream inputstream) throws IOException
{

int len = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(inputstream));
byte[] buf = new byte[10000];
buf = in.readLine().getBytes();
len = buf.length;
byte[] ret = new byte[len];
System.arraycopy(buf, 0, ret, 0, len);
return ret;
}这段代码运行到buf = in.readLine().getBytes();的时候就不能再往下运行了。
byte[] buf = new byte[10000];
len = inputstream.read(buf);
byte[] ret = new byte[len];
System.arraycopy(buf, 0, ret, 0, len);
return ret;
换成这行代码。就没有问题了。
但这是在本机上运行的。本机的环境是windows。
把程序布署到Linux服务器上。本机(windows环境)访问的时候。返回的字符串会少了数据。

解决方案 »

  1.   

    public byte[] processInput(InputStream inputstream) throws IOException { 
       BufferedReader in = new BufferedReader(new InputStreamReader(inputstream)); 
       String line=null;
       if((line=in.readLine())!=null){
           return line.getBytes();
       }else{
           return null;
       }
    } 这样试试
      

  2.   

    public byte[] processInput(InputStream inputstream) throws IOException {  
       int len=inputstream.available();
       byte[] buff=new byte[len];
       inputsteam.read(buff);
       return buff;
     } 
      

  3.   

    单一来执行是没有问题的。只是放到Linux服务器上就有问题了。从本机访问了。返回的大概1460位。少了20位左右。
      

  4.   

    因为你用的是readLine()
    windows下面的换行符是CRLF
    linux的是LF
    所以多了吧
      

  5.   

    readLine() 在本机上都是不能运行通过的。但是把这个方法单独拿出来。却是能够运行并得到数据的。(虽然不是完全数据)。
    能运行的是:
    public byte[] processInput(InputStream inputstream) throws IOException 

    int len = 0;
    byte[] buf = new byte[10000]; 
    len = inputstream.read(buf); 
    byte[] ret = new byte[len]; 
    System.arraycopy(buf, 0, ret, 0, len); 
    return ret; 
    }
    运行的是这个方法。
    为什么在本机上运行的时候。能得到全部的返回报文。但是放在服务器上。却会丢失一部分的报文。 
      

  6.   

    http://www.javaeye.com/topic/176777#499426
    OK了。谢谢大家。