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环境)访问的时候。返回的字符串会少了数据。
{
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环境)访问的时候。返回的字符串会少了数据。
BufferedReader in = new BufferedReader(new InputStreamReader(inputstream));
String line=null;
if((line=in.readLine())!=null){
return line.getBytes();
}else{
return null;
}
} 这样试试
int len=inputstream.available();
byte[] buff=new byte[len];
inputsteam.read(buff);
return buff;
}
windows下面的换行符是CRLF
linux的是LF
所以多了吧
能运行的是:
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;
}
运行的是这个方法。
为什么在本机上运行的时候。能得到全部的返回报文。但是放在服务器上。却会丢失一部分的报文。
OK了。谢谢大家。