我有一個由我的移動網絡提供商製作的Windows桌面應用程序,它可以完成SIP的各種操作:調用,發送消息等。此應用程序如何成功發送屏幕截圖MESSAGE
(最後4行): 如何通過SIP發送即時消息
MESSAGE
請求,從桌面應用程序,被作爲從後面(第四行):
MESSAGE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP LOCALIP:2112;branch=z9hG4bK-d8754z-905183245f478c76-1---d8754z-;rport
Max-Forwards: 70
To: "TO"<sip:[email protected]>
From: "FROM"<sip:[email protected]>;tag=63088d09
Call-ID: NGVhMDJhYzQwNmExOTQyNThmNjc5OGNmOTViNDUyYWM.
CSeq: 2 MESSAGE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: text/plain
Content-Length: 4
test
和該全成響應爲:
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP LOCALIP:2112;received=EXTERNALIP;branch=z9hG4bK-d8754z-905183245f478c76-1---d8754z-;rport=2112
To: "TO"<sip:[email protected]>;tag=c005f0e30133ec730add76fc91f4bea
From: "FROM"<sip:[email protected]>;tag=63088d09
Call-ID: NGVhMDJhYzQwNmExOTQyNThmNjc5OGNmOTViNDUyYWM.
CSeq: 2 MESSAGE
Content-Length: 0
Proxy-Authenticate: Digest nonce="3F178051B97E1F5200A3C53D4B",realm="DOMAIN",algorithm=MD5,qop="auth"
然後我嘗試從PHP發送相同的(和正的變化)的要求,但我總是收到SIP/2.0 403 Forbidden
代替SIP/2.0 407 Proxy Authentication Required
:
SIP/2.0 403 Forbidden
Via: SIP/2.0/UDP LOCALIP;received=EXTERNALIP
To: "TO"<sip:[email protected]>;tag=aprqngfrt-f7ccjj0000020
From: "FROM"<sip:[email protected]>;tag=8f7be81d
Call-ID: [email protected]
CSeq: 1 MESSAGE
Reason: Q.850;cause=55;text="Call Terminated"
Content-Length: 0
有趣的是,如果我發送REGISTER
要求它的工作原理,併成功收到SIP/2.0 401 Unauthorized
標頭WWW-Authenticate
。我重新計算授權,並重新發送。然後我收到SIP/2.0 200 OK
。這應該如何與MESSAGE
配合使用。
什麼可能是錯的?我錯過了什麼?請問MESSAGE
之前需要其他一些要求(我以前已經試過REGISTER
)?
我已經讀了RFC 3428上下,嘗試了所有可能的例子,但沒有成功。
我不是'SIP'專家,看起來你知道你在做什麼。我只能說,如果你確信自己做的和其他軟件完全相同(沒有任何鎖定),我會說爲你做的事情可能會有所不同。也許控制字符不匹配可能是一個好的開始,比如'\ n' vs'\ n \ r'。 – Mehran
@Mehran:我不認爲不同類型的「新行」會有所作爲,因爲'REGISTER'方法正在工作。例如,如果我從請求中刪除'CSeq'頭,SIP服務器將返回'SIP/2.0 400 Missing CSeq Header' ...這告訴我,通信是可以的。我認爲'MESSAGE'方法發送正確,它必須是別的;( –