.NET 发送电信彩信 组包(二)

上一篇(.NET 发送电信彩信 组包(一))已经提到.NET发送电信彩信组包。


并且提供了彩信包的格式。


这里我就来解释下各个部分。已经可能会遇到的问题。我是通过HttpWebRequest POST请求的方式发送这个包的。


  1. POST /MmsSendMessageService HTTP/1.1  
  2. Content-Type: multipart/related; boundary="==part20111027095621=="type="text/xml"start="<SOAP-ENV:Envelope>"  
  3. SOAPAction: ""  
  4. Host: 118.85.200.55:9081  
  5. Content-Length: 49878  
  6. Expect: 100-continue  

这个是HttpWebRequest  请求的头。这两个东西很重要。

Content-Type: multipart/related; boundary="==part20111027095621=="type="text/xml"start="<SOAP-ENV:Envelope>"  

SOAPAction: ""        电信文档里有提到,SOAPAction用空值。 

需要添加到头中去。


HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(请求的地址);
myRequest.ContentType = "multipart/related; boundary=\"==part20111027095621==\"; type=\"text/xml\"; start=\"<SOAP-ENV:Envelope>\"";
myRequest.Headers.Add("SOAPAction: \"\"");



接下来就是拼接彩信包了。
包的格式在 .NET 发送电信彩信 组包(一)里已经给出。


这里要说的是几个特别需要注意的地方。


根据包格式组包成功后,和电信对接测试。

一直不能成功。通过抓包发现错误提示是

<faultstring>500 Internal Server Error</faultstring>

具体错误是:


<messageId>SVC0001</messageId>
<text>SOAP_VERSIONMISMATCH</text>


SOAP版本不匹配。疯了。


我仔细核对,看看是不是包那里有格式不正确,木有啊


郁闷啊,老天啊。那里有问题啊。

只有一天了,今天在不搞定,测试就不能通过了。

业务就要打回来了。(人在屋檐下,不得不低头啊)


继续调整,在测试,还是相同错误。


继续和电信提供的包格式核对,确定包体和附件都没问题。

错误的内容是SOAP版本不正确,我就想难道是电信的和我用的SOAP版本不想符合,

于是我就继续查找SOAP相关的知识。

看到一个很有用的帖子,地址不记得了(找到在发布上来)。


帖子中说道带附件的SOAP包格式。


包体之间需要用换行符号隔开。及:


  1. --==part20111027095621==这里有个\r\n
  2. Content-Type: text/xml; charset=UTF-8  这里有个\r\n
  3. Content-Transfer-Encoding: binary  这里有个\r\n
  4. Content-ID: <SOAP-ENV:Envelope>  这里有个\r\n 还需要在来一个\r\n空一行
  5.   
  6. <?xml version="1.0" encoding="UTF-8" ?> 

包体和附件,附件中协议和附件体具体格式请参照.NET 发送电信彩信 组包(一)

这个换行一定要注意,不然post就不能成功。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值