高分求教webservice设置header问题

wgj830823 2013-06-20 11:20:08
目前有一个webservice是发布在java环境中的,服务器启用了安全模式,调用业务接口前首先调用server端的login接口,获得返回的sessionId,然后调用业务接口传数据时必须在soap头中带上SessionId。

如下红字部分:

<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:m0="http://com.kingdee.eas.base.btp.app.BTPManager/isPropOwner/parameter/promote">
<SOAP-ENV:Header>
<ns1:SessionId xmlns:ns1="http://login.webservice.bos.kingdee.com">ada894c0-8223-41dc-b816-61eb67dc38bd</ns1:SessionId>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:isPropOwner xmlns:m="http://com.kingdee.eas.base.btp.app.BTPManager/Service">
<m0:bosTypeString>BF76D8D1</m0:bosTypeString>
<m0:propName>id</m0:propName>
</m:isPropOwner>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

但是业务接口的wsdl并没有包含对header的描述,需要手工添加头信息。
我用java 测试axis是可以设置header的,但是在.net中始终不能通过,
我.net中根据网上的方式 在service中添加了一个soapheader
但是不知道怎么设置namespace。
.net 部分代码如下
service中添加的soapHeader:

 public partial class WSWSImportTMSCreditBillFacadeSrvProxyService : System.Web.Services.Protocols.SoapHttpClientProtocol {




public class loginToken : SoapHeader
{

public string SessionId;

public loginToken(){

// this.
// this.
// "http://login.webservice.bos.kingdee.com";
}


}


public loginToken Header = new loginToken();




private System.Threading.SendOrPostCallback importTMSCreditBill_xmlOperationCompleted;
。。。。。。。。



调用接口:
  private void btnSendData_Click(object sender, EventArgs e)
{
try
{
EasCredit.WSWSImportTMSCreditBillFacadeSrvProxyService P1 = new EasInterFace.EasCredit.WSWSImportTMSCreditBillFacadeSrvProxyService();

string xml = "业务数据。。。。";

EasCredit.WSWSImportTMSCreditBillFacadeSrvProxyService.loginToken loginHeader = new EasCredit.WSWSImportTMSCreditBillFacadeSrvProxyService.loginToken();
loginHeader.SessionId = sessionID; // sessionID值没有问题

P1.Header = loginHeader;
string[] s = P1.importTMSCreditBill_xml(xml);

this.textBox1.Text = s[0] + s[1];

// MessageBox.Show(s[0] + s[1]);
}
catch (Exception err)
{
string s = err.Message;
this.textBox1.Text = s;
// MessageBox.Show(s);
}
}


这样header始终没有传过去

...全文
879 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
风一样的大叔 2013-11-12
  • 打赏
  • 举报
回复
不懂帮顶
wgj830823 2013-06-21
  • 打赏
  • 举报
回复
怎么会没人会呢?

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧