Commit bf76240724234307bfc5f5bc2e345ad896ae16bd
1 parent
667266f3
增加对Subscribe(订阅)方法的支持
Showing
1 changed file
with
47 additions
and
0 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
| @@ -164,4 +164,51 @@ public class SIPRequestHeaderProvider { | @@ -164,4 +164,51 @@ public class SIPRequestHeaderProvider { | ||
| 164 | request.setContent(content, contentTypeHeader); | 164 | request.setContent(content, contentTypeHeader); |
| 165 | return request; | 165 | return request; |
| 166 | } | 166 | } |
| 167 | + | ||
| 168 | + public Request createSubscribeRequest(Device device, String content, String viaTag, String fromTag, String toTag, Integer expires, String event) throws ParseException, InvalidArgumentException, PeerUnavailableException { | ||
| 169 | + Request request = null; | ||
| 170 | + // sipuri | ||
| 171 | + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); | ||
| 172 | + // via | ||
| 173 | + ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); | ||
| 174 | + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), | ||
| 175 | + device.getTransport(), viaTag); | ||
| 176 | + viaHeader.setRPort(); | ||
| 177 | + viaHeaders.add(viaHeader); | ||
| 178 | + // from | ||
| 179 | + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), | ||
| 180 | + sipConfig.getSipIp() + ":" + sipConfig.getSipPort()); | ||
| 181 | + Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); | ||
| 182 | + FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); | ||
| 183 | + // to | ||
| 184 | + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain()); | ||
| 185 | + Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); | ||
| 186 | + ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag); | ||
| 187 | + // callid | ||
| 188 | + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() | ||
| 189 | + : udpSipProvider.getNewCallId(); | ||
| 190 | + // Forwards | ||
| 191 | + MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); | ||
| 192 | + // ceq | ||
| 193 | + CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(1L, Request.SUBSCRIBE); | ||
| 194 | + | ||
| 195 | + request = sipFactory.createMessageFactory().createRequest(requestURI, Request.SUBSCRIBE, callIdHeader, cSeqHeader, fromHeader, | ||
| 196 | + toHeader, viaHeaders, maxForwards); | ||
| 197 | + | ||
| 198 | + | ||
| 199 | + Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort())); | ||
| 200 | + request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); | ||
| 201 | + | ||
| 202 | + // Expires | ||
| 203 | + ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(expires); | ||
| 204 | + request.addHeader(expireHeader); | ||
| 205 | + | ||
| 206 | + // Event | ||
| 207 | + EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event); | ||
| 208 | + request.addHeader(eventHeader); | ||
| 209 | + | ||
| 210 | + ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "MANSCDP+xml"); | ||
| 211 | + request.setContent(content, contentTypeHeader); | ||
| 212 | + return request; | ||
| 213 | + } | ||
| 167 | } | 214 | } |