648540858
2022-06-04 d3e815bf16541884cf998bda9ae7bcd5b29b87e2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -32,7 +32,9 @@
import org.springframework.util.StringUtils;
import javax.sip.*;
import javax.sip.address.Address;
import javax.sip.address.SipURI;
import javax.sip.address.URI;
import javax.sip.header.*;
import javax.sip.message.Request;
import java.lang.reflect.Field;
@@ -1487,12 +1489,20 @@
         Request request;
         if (dialog != null) {
            logger.info("发送移动位置订阅消息时 dialog的状态为: {}", dialog.getState());
            SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
            request = dialog.createRequest(Request.SUBSCRIBE);
            ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog());
            request.setExpires(expiresHeader);
            request.setRequestURI(requestURI);
            ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
            request.setContent(subscribePostitionXml.toString(), contentTypeHeader);
            ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForMobilePosition());
            request.addHeader(expireHeader);
            CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME);
            cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE));
            request.removeHeader(CSeqHeader.NAME);
            request.addHeader(cSeqHeader);
         }else {
            String tm = Long.toString(System.currentTimeMillis());
            CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
@@ -1583,12 +1593,21 @@
         Request request;
         if (dialog != null) {
            logger.info("发送目录订阅消息时 dialog的状态为: {}", dialog.getState());
            SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
            request = dialog.createRequest(Request.SUBSCRIBE);
            ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog());
            request.setExpires(expiresHeader);
            request.setRequestURI(requestURI);
            ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
            request.setContent(cmdXml.toString(), contentTypeHeader);
            ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForMobilePosition());
            request.addHeader(expireHeader);
            CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME);
            cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE));
            request.removeHeader(CSeqHeader.NAME);
            request.addHeader(cSeqHeader);
         }else {
            String tm = Long.toString(System.currentTimeMillis());