本文共 1907 字,大约阅读时间需要 6 分钟。
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(); ArrayListviaHeaders = new ArrayList (); viaHeaders.add(viaHeader); cSeqHeader.setMethod(Request.ACK); Request ACKRequest = messageFactory.createRequest(requestURI, Request.ACK, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); sipProvider.sendRequest(ACKRequest); }
源码:
转载地址:http://gkwob.baihongyu.com/