c#调用java写的webservice,添加Soapheader,怎么在SOAPheader 中添加类型标记符号
c#调用java写的webservice,添加Soapheader,怎么在SOAPheader 中添加类型标记符号
电信提供给我们java写的webservice
经过C#调用后,要添加自定义的SOAPHeader。
利用代理类函数生成的SOAPHeader都不带类型标记符号。
问怎么才能添加上呢
C#生成的 SOAPHeader如下:
<soap:Header>
<RequestSOAPHeader xmlns="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1">
<spId>1</spId>
<spPassword>spPassword</spPassword>
<timeStamp>timeStamp</timeStamp>
<ProductId>productId</ProductId>
<transactionId>transactionId</transactionId>
<transEnd>transEnd</transEnd>
<linkId>linkId</linkId>
<OA>OA</OA>
<FA>FA</FA>
<multicastMessaging>multicastMessaging</multicastMessaging>
</RequestSOAPHeader>
</soap:Header>
标准的SOAPHeader 如下:
* <soapenv:Header>
* <tns:RequestSOAPHeader xmlns:tns="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1">
* <tns:spId>123456</tns:spId>
* <tns:spPassword>123456</tns:spPassword>
* <tns:timeStamp>0101111111</tns:timeStamp>
* <tns:productId>123456</tns:productId>
* <tns:transactionId>123456</tns:transactionId>
* <tns:transEnd>-1</tns:transEnd>
* <tns:linkId>123456</tns:linkId>
* <tns:OA>tel:8613907550001</tns:OA>
* <tns:FA>tel:8613907550001</tns:FA>
* <multicastMessaging>false</tns:multicastMessaging>
* </tns:RequestSOAPHeader>
* </soapenv:Header>
注意两个黑体部分不一样,自动生成的是<soap></soap> 标准提供的是<soapenv></soapenv>
另外 每个节点都有<tns:,请问 怎么让自动生成的也添加上<tns呢?
[解决办法]
这个应该没问题
public class TransactionID:SoapHeader{ [XmlValue] public string Value; }
[解决办法]
RequestSOAPHeader header=new RequestSOAPHeader();
header.Namespaces.Add("tns");
-----------
好像在类上面还要添加属性namespace属性来设置:
tns="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1"
[解决办法]
看样子楼主在做SP网关?
[解决办法]
Axis Xfire .net-WS 这些集成的Ws优点很多
缺点就是在报文级的控制上不够好。
我做了一个轻量级的类似Ws的工具,目前调通了.net、java、js的部分。