{
//有个问题:这里这么多的分块回复,每个回复都是独立的,那究竟最终的回复是依据第一个还是最后一个呢?
//这里依据的是最后一个回复
//新建一个回复对象,把最后一个回复的状态和回复消息复制到到新回复对象
SipcResponse last = this.sliceReponseList.get(this.sliceReponseList.size()-1);
SipcResponse some = new SipcResponse(last.getStatusCode(), last.getStatusMessage());
//把最后一个回复对象的所有消息头除了Content-Length都复制到新回复对象
Iterator<SipcHeader> it = last.getHeaders().iterator();
while(it.hasNext()){
SipcHeader header = it.next();
if(!SipcHeader.LENGTH.equals(header.getName())){ //如果不是L域就复制到新的回复头部中
some.addHeader(header);
}
}
//复制所有消息体到新的回复包中
StringBuffer buffer = new StringBuffer();
Iterator<SipcResponse> rit = this.sliceReponseList.iterator();
while(rit.hasNext()){
SipcResponse res = rit.next();
if(res.getBody()!=null){
buffer.append(res.getBody().toSendString());
}
}
some.setBody(new SipcBody(buffer.toString()));
//别忘了设置消息长度,虽然可能用不上。。