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 | 164 | request.setContent(content, contentTypeHeader); |
| 165 | 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 | } | ... | ... |