2016-07-14 37 views
0

如何构建Onvif GetStreamUrl消息?我曾尝试以百万计的可能性,这里就是其中之一:Onvif - GetStreamUri说:“XML格式良好的违规发生”

<?xml version="1.0" encoding="UTF-8"?> 
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> 
    <s:Header> 
    <Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <UsernameToken><Username>onvif</Username> 
     <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">tFvFfoo7ZZhmKv61tTBJ4agS/lM=</Password> 
     <Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NTcxNjg1NTQwNzg2Mzcx</Nonce> 
     <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2016-07-14T14:02:27Z</Created> 
     </UsernameToken> 
    </Security> 
    </s:Header> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <GetStreamUri xmlns="http://www.onvif.org/ver10/media/wsdl"> 
     <StreamSetup> 
    <StreamType>RTP-Unicast</StreamType> 
    <Transport> 
     <TransportProtocol>UDP</TransportProtocol> 
    </Transport> 
     </StreamSetup> 
     <ReferenceToken>profile_1_h264</ReferenceToken> 
    </GetStreamUri> 
    </s:Body> 
</s:Envelope> 

官方规格是在这里:http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl#op.GetStreamUri

有没有人可以帮助我?

+0

如果数据中真正存在'<?xml'前面的空格,请尝试删除它。 – Tomalak

+0

它没有,我也根本不在消息中使用空格。 – JochoM

+0

你发现问题是什么?我得到了同样的错误... –

回答

0

那么如果你想自己制作信封,你可以使用下面的测试模板,并发出包含SOAP信封的http请求。

<?xml version="1.0" encoding="UTF-8"?> 
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> 
    <s:Header> 
     <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1"> 
      <wsse:UsernameToken wsu:Id="SecurityToken-906d1a56-c091-4d33-8afa-04445dd123ff" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
       <wsse:Username>admin</wsse:Username> 
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">THHcq7prwwf/42S+A5tuorg/RMY=</wsse:Password> 
       <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">f11vJWByh7IJBvZRi46Qeg==</wsse:Nonce> 
       <wsu:Created>2016-10-19T05:42:47Z</wsu:Created> 
      </wsse:UsernameToken> 
     </Security> 
    </s:Header> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <GetStreamUri xmlns="http://www.onvif.org/ver10/media/wsdl"> 
      <StreamSetup> 
       <Stream xmlns="http://www.onvif.org/ver10/schema">RTP-Unicast</Stream> 
       <Transport xmlns="http://www.onvif.org/ver10/schema"> 
        <Protocol>UDP</Protocol> 
       </Transport> 
      </StreamSetup> 
      <ProfileToken>2_def_profile1</ProfileToken> 
     </GetStreamUri> 
    </s:Body> 
</s:Envelope> 

但使用ONVIF媒体服务,你可以得到的资料,选择其中之一,并呼吁GetStreamUri方法与你的首选StreamSetup和所选配置文件的令牌。