基于WSP/WTP的MMS传输(6)——MMS Notification 解析

之所以把MMS Notification 放在单独的一节是由于它的特殊性,前面提到过,MMS Notification 是由SMSC(短息服务中心)以PUSH 通知的方式发给接收方的,即MMS Notification 是一条短息,不同于普通的短息,MMS Notification 的编码是WSP +MMS PDU Header 的结构,里面最重要的信息就是Content-Location ,它指出了彩信所在的Uri 地址,接收时从该地址下载彩信到客户端,这个Uri 地址前面我们看到过,类似于http://xxx.xxx.xxx.xxx//abcd efghijkl 的样子,不同的彩信,中间的IP 是不一样的,如果是移动帐号,后面的字符一般是12 个的长度,但是也不保证一定是这个长度,对我们来说,它们是随机生成的。当然,MMS Notification 里面还包括发送方的手机号码等信息。

    下面是 MMS Notification 的 Short Message 结构:

 

图20 MMS Notification 结构


    说明一点,对应用层来说,SM-TL 和TP-UDP 是不可见的,在wince 平台上,这部分由驱动层来完成,通过WIN API 实际接收到的是WSP PDU 和MMS PDU Header 部分。下面提供一个从网上摘抄的例子来说明MMS Notification 的结构。

 

十六进制编码如下

08 91 68 31 08 10 00 05 F0 44 04 A1 33 25 00 04 60 01 52 32 95 35 23 88 06 05 04 0B 84 23 F0 A 5 06 24 61 70 70 6C 69 63 61 74 69 6F 6E 2F 76 6E 64 2E 77 61 70 2E 6D 6D 73 2D 6D 65 73 73 61 67 65 00 B4 87 AF 84 8C 82 98 5A 58 37 32 68 63 4D 41 6C 71 37 41 00 8D 90 83 68 74 74 70 3A 2F 2F 32 31 38 2E 32 30 30 2E 32 34 39 2E 33 38 2F 5A 58 37 32 68 63 4D 41 6C 71 37 41 00 88 05 81 03 02 A3 00 89 16 80 35 35 35 35 31 36 30 31 30 33 2F 54 59 50 45 3D 50 4C 4D 4E 00 8A 82 8E 01 0D

08 91 68 31 08 10 00 05 F0

 

Octet(s)

Description

08

Length of the SMSC info

91

international format

683108100005F 0

Service center number, +8613800100500

参考ETSI TS 123 040 Technical realization of SMS 的

9.1.2 .5 Address fields

9.2.2 .1 SMS-DELIVER type

        相关网站:http://webapp.etsi.org/key/queryform.asp

44 04 A1 33 25 00 04 60 01 52 32 95 35 23 88

Octet(s)

Description

44

First octet of this SMS-DELIVER message.

04

Length Of the Sender info

A1

National format

3325

Sender number, 3352

00

TP-PID

04

TP-DCS ( 8 bit data)

60015232953523

Timestamp: Wed Oct 25 23:59:53 CST 2006

88

TP-UDL

参考ETSI TS 123 040 Technical realization of SMS 的

9.1.2 .5 Address fields

9.2.2 .1 SMS-DELIVER type

        相关网站:http://webapp.etsi.org/key/queryform.asp

下面是 TP-UD 部分(WDP Header ) :

06 05 04 0B 84 23 F0

Octet(s)

Description

06

UDHL (user data header length)

05

Information Element identifier:

Application port addressing 16 bit.

04

Information element length

0B84

Destination port

23F 0

Originating port

参考 Wireless Datagram Protocol Specification

6.3 Mapping of WDP for GSM SMS

Appendix B. Port Number Definitions

相关网站:http://www.openmobilealliance.org/tech/affiliates/wap/wapindex.html

 

A5 06 24 61 70 70 6C 69 63 61 74 69 6F 6E 2F 76 6E 64 2E 77 61 70 2E 6D 6D 73 2D 6D 65 73 73 61 67 65 00 B4 87 AF 84

Octet(s)

Description

A5

Transaction ID

06

PDU Type: Push

24

Length of Content type + Header

6170706C 69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500

Content type: (8 bit encoding of)
application/vnd.wap.mms-message

B4 87

Push Flag: 87

AF 84

X-Wap-Application-Id: 84

参考Wireless Session Protocol Specification

8.2.1 P DU Common Fields

Appendix A Assigned Numbers

8.2.4 .1 Push and Confirmed Push

8.4.2 Header syntax

 

8C 82 98 5A 58 37 32 68 63 4D 41 6C 71 37 41 00 8D 90 83 68 74 74 70 3A 2F 2F 32 31 38 2E 32 30 30 2E 32 34 39 2E 33 38 2F 5A 58 37 32 68 63 4D 41 6C 71 37 41 00 88 05 81 03 02 A3 00 89 16 80 35 35 35 35 31 36 30 31 30 33 2F 54 59 50 45 3D 50 4C 4D 4E 00 8A 82 8E 01 0D

Octet(s)

Description

8C 82

X-Mms-Message-Type: m-notification-ind

98 5A 58 37 32 68 63 4D 41 6C 71 37 41 00

Transaction-ID: ZX72hcMAlq7A

8D 90

MMS-Version: 1.0

83687474703A 2F 2F3231382E3230302E3234392E33382F5A58373268634D416C71374100

Content-Location:
http://218.200.249.38/ZX72hcMAlq7A

88 05 81 03 02 A3 00

Expiry + Length + Relative-token + Delta-secs:

54.8 hour?

891680353535353136303130332F545950453D504C4D4E00

From + Length + Address-Present-token:
5555160103/TYPE=PLMN

8A 82

Msg-Class: Info

8E 01 0D

Msg-Size: 269

参考WAP 209 MMS Encapsulation Protocol

7. Binary Encoding of PDU


    到此完整的mms notification 解析结束。从这个Push 通知中,我们应当保存Uri 信息。然后再给MMSC 发送一个M-Notifyresp.ind 以确认接收到了Push 通知。前面提到过,M-Notifyresp.ind 可以在接受完MMS 后再发,或者立即发出M-Notifyresp.ind ,然后再从MMSC 下载MMS 。而M-Notifyresp.ind 里面指明了是马上接收还是延迟接收。关于M-

Notifyresp.ind 的格式可以参考MMS Encapsulation 的6.2 节Multimedia Message Notification ,它只有几个很少的域需要填写。

来自:http://blog.csdn.net/jccmusi/article/details/5825039

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WSDLException (at /wsdl:definitions/wsdl:porttype/wsp:policy): faultcode=inv 是指在解析并处理 WSDL 文件时发生了错误。 WSDLException 是一个 WSDL 解析异常类,它会提示解析 WSDL 文件时遇到的问题,并提供相应的错误代码和信息以方便排查。 在该错误信息中,(at /wsdl:definitions/wsdl:porttype/wsp:policy) 指明了发生错误的位置。它意味着在 WSDL 文件的定义部分中的 porttype 元素下的 policy 元素出现了问题。 faultcode=inv 是指错误的类型为 "inv",表示 WSDL 文件或其中的某个部分包含无效或不符合 WSDL 规范的内容。 要解决这个问题,可以按照以下步骤进行排查和修复: 1. 检查 WSDL 文件中的 porttype 元素下的 policy 元素的定义和内容是否符合 WSDL 规范。确保其中所使用的策略和设置是有效的,并且符合相关的约定和要求。 2. 检查导致错误的代码行附近是否存在拼写错误、语法错误或其他错误。对于复杂的 WSDL 文件,可以使用文本编辑器或专业的 XML 工具来验证文件的有效性。 3. 查看相关的日志或错误信息,尝试了解更多关于错误原因的详细信息。可能会有其他的错误提示或警告信息,帮助你更好地了解问题的根本原因。 4. 如果以上方法都无法解决问题,可以尝试使用其他版本的 WSDL 文件或尝试重新生成 WSDL 文件。 5. 最后,如果仍然无法解决问题,可以考虑咨询相关的技术支持或向开发社区提问,寻求更专业的帮助和建议。 总之,要解决 WSDLException (at /wsdl:definitions/wsdl:porttype/wsp:policy): faultcode=inv 错误,需要仔细检查 WSDL 文件中的定义、语法和策略设置,并采取相应的措施来修复或调整问题所在。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值