在linux用websphere部署jfinal。项目时。
在controller里。接收流和返回流数据的时候。(因为是和其他系统对接的。必须用流)
报了以下错误:很奇怪。都不知道是哪出的错。可以的话帮忙看下。
报 java.io.IOException:SRVE0216E:post body contains less bytes than specified by content-length
但是他有没报具体位置。很难找。
以下是省略的代码:
public void index() {
renderNull();
log.debug("报文处理模块----");
try{
//获取EAI_HOME path参数
DataInputStream dis = null;
byte[] reqData=null;
try
{
log.debug("inputStream准备读取报文体!");
dis=new DataInputStream(new BufferedInputStream(getRequest().getInputStream()));
int length=dis.readInt();
log.debug("inputStream准备读取长度="+length);
reqData=HttpConnUtil.readLenContent(dis, length);
log.debug("inputStream读取1:"+reqData.length);
log.debug("inputStream读取1:"+new String(reqData));
}catch (Exception e){
log.error("读取inputStream流失败!"+e.getMessage());
}
HttpServletRequest req = getRequest();
HttpServletResponse rsp = getResponse();
this.writeContent(rsp, rspData, "F");
}catch (Exception e){
log.error("报文处理异常:"+e.getMessage());
}
}
private void writeContent(HttpServletResponse response, byte[] data, String status) {
DataOutputStream out = null;
try {
log.debug("writeContent---start");
if(status != null) {
response.setHeader("state", status);
}
if(data != null) {
out = new DataOutputStream(response.getOutputStream());
out.writeInt(data.length);
out.write(data);
out.flush();
}
log.debug("writeContent---end");
} catch (IOException var14) {
log.error("写入响应数据出错", var14);
} finally {
try {
if(out != null) {
out.close();
log.debug("writeContent---close-end");
}
} catch (IOException var13) {
log.error("writeContent---close-Exception!"+var13.getMessage());
}
}
}
1、试着在请http请求头中加入httpURLConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
2、看是否使用的websphere本身版本问题如果是,该打补丁的就得打下补丁。