GB28181:基于JAVA的Catalog目录获取[part4]
1、国标文件里面获取流的描述
QQ图片20210128113040.png
2、java组装SIP流请求信令
private void doResponseInvite(ResponseEvent responseEvent, AddressFactory addressFactory, MessageFactory messageFactory, HeaderFactory headerFactory, SipProvider sipProvider, Response response, CSeqHeader cSeqHeader) throws ParseException, SipException, InvalidArgumentException {
if (responseEvent.getResponse().getStatusCode()== Response.OK) {
log.info("收到INVITE的OK返回,组装发送ACK信令");
sendAckRequest(responseEvent,messageFactory,addressFactory, headerFactory, sipProvider, response);
} else {
log.info("异常的INVITE返回,返回编码:{}",responseEvent.getResponse().getStatusCode());
}
}
private void sendAckRequest(ResponseEvent responseEvent, MessageFactory messageFactory, AddressFactory addressFactory, HeaderFactory headerFactory, SipProvider sipProvider, Response response) throws InvalidArgumentException, ParseException, SipException {
CSeqHeader cSeqHeader = (CSeqHeader) response.getHeader(CSeqHeader.NAME);
CallIdHeader callIdHeader = ((CallIdHeader) response.getHeader(CallIdHeader.NAME));
ToHeader toHeader = ((ToHeader) response.getHeader(ToHeader.NAME));
FromHeader fromHeader = ((FromHeader) response.getHeader(FromHeader.NAME));
SipURI requestURI = (SipURI) toHeader.getAddress().getURI();
MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70);
ViaHeader viaHeader = ((ViaHeader) response.getHeader(ViaHeader.NAME));
viaHeader.setRPort();
ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
viaHeaders.add(viaHeader);
cSeqHeader.setMethod(Request.ACK);
Request ACKRequest = messageFactory.createRequest(requestURI, Request.ACK, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards);
sipProvider.sendRequest(ACKRequest);
}