博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[解决]电信彩信网关开发错误-SOAP_VERSIONMISMATCH
阅读量:6458 次
发布时间:2019-06-23

本文共 4612 字,大约阅读时间需要 15 分钟。

上一个文章:  说的问题
    
<
messageId
>SVC0001
</
messageId
>  

    <text>SOAP_VERSIONMISMATCH</text> 

 已经解决,主要是查看了网上的一个同学的帖子,非常感谢。

  再来看一下请求信息 

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用空值。 

需要添加到头中去。

 

1     HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(请求的地址);   

2     myRequest.ContentType = "multipart/related; boundary=\"==part20111027095621==\"; type=\"text/xml\"; start=\"<SOAP-ENV:Envelope>\"";  

3     myRequest.Headers.Add("SOAPAction: \"\""); 

 

 接下来就是拼接彩信包了。 文章中的包还是有点小问题,下面看这个成功测试过的包。

 1 POST /MmsSendMessageService HTTP/
1.1
 2 Host:
118.85.
200.55:
9081
 3 User-Agent: WU
 4 Content-Type: multipart/related;  boundary=
"
==part20120120111818==
"; type=
"
text/xml
"; start=
"
<BB724A5ADD3D2A96CA5E4697BAD1F3A8>
"
 5 Content-Length:
1803
 6 SOAPAction: 
""
 7 
 8 --==part20120120111818==
 9 Content-Type: text/xml; charset=UTF-
8
10 Content-Transfer-Encoding: binary
11 Content-ID: <BB724A5ADD3D2A96CA5E4697BAD1F3A8>
12 
13 <?xml version=
"
1.0
" encoding=
"
UTF-8
"?>
14 <SOAP-ENV:Envelope xmlns:SOAP-ENV=
"
http://schemas.xmlsoap.org/soap/envelope/
" xmlns:SOAP-ENC=
"
http://schemas.xmlsoap.org/soap/encoding/
" xmlns:xsi=
"
http://www.w3.org/2001/XMLSchema-instance
" xmlns:xsd=
"
http://www.w3.org/2001/XMLSchema
" xmlns:ns3=
"
http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1
" xmlns:ns1=
"
http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local
">
15 <SOAP-ENV:Header>
16 <ns3:RequestSOAPHeader>
17 <spId>
35101051</spId>
18 <spPassword>E6E19093A2691F495D27332B9F1584F8</spPassword>
19 <timeStamp>
0120111818</timeStamp>
20 <productId>
135000000000000166819</productId>
21 <SAN></SAN>
22 <transactionId></transactionId>
23 <transEnd>
0</transEnd>
24 <linkId>
01130545065586044505</linkId>
25 <OA>tel:
18925280633</OA>
26 <FA></FA>
27 <multicastMessaging>
false</multicastMessaging>
28 </ns3:RequestSOAPHeader>
29 </SOAP-ENV:Header>
30 <SOAP-ENV:Body>
31 <ns1:sendMessage>
32 <ns1:addresses>tel:
18925280633</ns1:addresses>
33 <ns1:senderAddress>
10660502</ns1:senderAddress>
34 <ns1:subject>生活帮</ns1:subject>
35 <ns1:priority>Default</ns1:priority>
36 <ns1:charging>
37 <description></description>
38 <currency></currency>
39 <amount>
100</amount>
40 <code>shb</code>
41 </ns1:charging>
42 <ns1:receiptRequest>
43 <endpoint>tel:
18925280633</endpoint>
44 <interfaceName>sendMessage</interfaceName>
45 <correlator>
201201130605570433620518925280633</correlator>
46 </ns1:receiptRequest>
47 </ns1:sendMessage>
48 </SOAP-ENV:Body>
49 </SOAP-ENV:Envelope>
50 --==part20120120111818==
51 Content-Type: text/plain; charset=UTF-
8
52 Content-Transfer-Encoding: binary
53 Content-ID: <
1.txt>
54 Content-Location: 
1.txt
55 
56 yyadsf
57 
58 --==part20120120111818==--

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

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

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

<faultstring>500 Internal Server Error</faultstring>

具体错误是:

1     <messageId>SVC0001</messageId>  

2     <text>SOAP_VERSIONMISMATCH</text>  

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

错误的内容是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" ?>   

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

包体和附件,附件中协议和附件体具体格式请参照上面成功的包。

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

返回的数据格式为:

<?
xml version="1.0" encoding="UTF-8"
?>
<
SOAP-ENV:Envelope 
xmlns:SOAP-ENV
="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC
="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd
="http://www.w3.org/2001/XMLSchema"
 xmlns:comm3
="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1"
 xmlns:mm1
="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local"
>
    
<
SOAP-ENV:Header
>
        
<
comm3:NotifySOAPHeader
>
            
<
spRevId
>szsxd
</
spRevId
>
            
<
spRevpassword
>123542
</
spRevpassword
>
            
<
spId
>35101051
</
spId
>
            
<
linkId
>01130545065586044505
</
linkId
>
        
</
comm3:NotifySOAPHeader
>
    
</
SOAP-ENV:Header
>
    
<
SOAP-ENV:Body
>
        
<
mm1:sendMessageResponse
>
            
<
mm1:result
>19350101400120111824000490H
</
mm1:result
>
        
</
mm1:sendMessageResponse
>
    
</
SOAP-ENV:Body
>

</SOAP-ENV:Envelope>  

程序处理Ok,再此还要感谢Google的搜索,和那位大哥的换行指导。

 

 

转载地址:http://xdizo.baihongyu.com/

你可能感兴趣的文章
[设计模式]装饰模式
查看>>
Python3学习
查看>>
RAID0+1 RAID5 性能比较
查看>>
Elasticsearch基本命令
查看>>
23种设计模式介绍(一)---- 创建型模式
查看>>
JavaIO简单代码实例
查看>>
Document Library SPQuery 文档库 查询
查看>>
【开源.NET】 分享一个前后端分离的轻量级内容管理框架
查看>>
每周一荐:学习ACE一定要看的书
查看>>
c# winform 之DataGridViewComboBoxColumn的使用
查看>>
2014.5.20知识点学习:void与void*(转载)
查看>>
一步一步学习SignalR进行实时通信_2_Persistent Connections
查看>>
jQuery中常用的函数方法总结
查看>>
tabbarcontroller-1
查看>>
[Leetcode]376. Wiggle Subsequence
查看>>
去除系统部分属性触摸是出现的色值
查看>>
程序猿告诉你,没问题不用测,信了你就输了(首发公众号:子安之路)
查看>>
Drools源于规则引擎
查看>>
yield的作用
查看>>
NGUI之scroll view的制作和踩坑总结
查看>>