当前位置:编程学习 > C#/ASP.NET >>

紧急求助:.Net客户端调用 Java写的webservice问题(关于Soap header)!【不惜一切代价】

Java写的webservice 使用 soap header (包含身份证信息)

请问:  .NET 客户端中如何调用

--------------------编程问答-------------------- 1.叫他发wsdl文档给你 (是一个xml)

2.用.net的 wsdluntil 工具生成代理类
(其实就是.net直接引用webservices的那种方式) --------------------编程问答--------------------
引用 1 楼 purple_tide 的回复:
1.叫他发wsdl文档给你 (是一个xml) 

2.用.net的 wsdluntil 工具生成代理类 
(其实就是.net直接引用webservices的那种方式)



没那么简单,java 的 soap header 与.net 自定义的 soad header 不一样! --------------------编程问答-------------------- 直接在解决方案里引用一个已经存在的WEB SERVICE项目。如果连接成功,那WEB SERVICES所有公开的方法和类应该都可以在你的解决方案里看到,使用就可以了吧。 --------------------编程问答--------------------
引用 3 楼 hxb74 的回复:
直接在解决方案里引用一个已经存在的WEB SERVICE项目。如果连接成功,那WEB SERVICES所有公开的方法和类应该都可以在你的解决方案里看到,使用就可以了吧。


如果那么简单就好了!谢谢帮顶!


现在的问题是,JAVA写的WEBservice 需要验证SOAP头信息,而.net默认是不发SOAP头过去的 ,肯定要自己定义了,自定义方法: 
Inherits System.Web.Services.Protocols.SoapHttpClientProtocol 

        Public Class MySoapHeader 
            Inherits SoapHeader 
            Public Username As String 
            Public Password As String 
        End Class 

但是怎么样将这个soap包一起发送到java 的webserivce 呢? 


.net 中通过引用   java 的 webseice  后自动生产代理类 
       <System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace:="http://test/AVExternalWS", ResponseNamespace:="http://test/AVExternalWS", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> _ 
        Public Function aliReceiveCancelAV( <System.Xml.Serialization.XmlElementAttribute(IsNullable:=True)> ByVal in0 As String) As  <System.Xml.Serialization.XmlElementAttribute("out", IsNullable:=True)> String 
            Dim results() As Object = Me.Invoke("aliReceiveCancelAV", New Object() {in0}) 
            Return CType(results(0), String) 
        End Function 

现在的问题是怎么样向这类中添加自定义SOAP header,这样似乎也不对 

<System.Web.Services.Protocols.SoapDocumentMethodAttribute("MySoapHeader", RequestNamespace:="http://test/AVExternalWS", ResponseNamespace:="http://test/AVExternalWS", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  --------------------编程问答--------------------
引用 3 楼 hxb74 的回复:
直接在解决方案里引用一个已经存在的WEB SERVICE项目。如果连接成功,那WEB SERVICES所有公开的方法和类应该都可以在你的解决方案里看到,使用就可以了吧。


可以偿试一下再说了。 --------------------编程问答-------------------- 这么复杂?顶下吧,学习。

我一直都是用直接找的,在解决方案上直接添加“WEB引用”,输入服务地址,如果找到,会在本地工程里生成相应服务的有关信息文件,然后就立马可用。 --------------------编程问答-------------------- 楼主应该调用的是另一厂家的 webservice 吧,可能是 java开发的。
这样一来, 5#楼的问了等于没问。 不给 soapheader ,不可能调得出来验证。 --------------------编程问答-------------------- 添加 ‘web引用’很简单,简直这个引用的代理类就像自己写的。
但是 当身份验证 的 soapheader 不在这个代理类里,只提供了xml描述。 你该如何?
#6 楼及以上的兄弟? --------------------编程问答-------------------- 现在做的项目也有这个情况,本身用.net,调用另一个厂家用AXIS2做的Webservice时需要传递SOAP Header进行验证.
http://www.cnblogs.com/kwklover/archive/2005/02/02/100875.html这个例子不知行不行?
或者...使用HttpWebRequest直接发了个SOAP过去...Header,body全部自己写的,用起来很麻烦,不推荐~ --------------------编程问答-------------------- 有空看一下 --------------------编程问答-------------------- 在这个帖子里回了。楼主不妨看一下:

http://topic.csdn.net/u/20120509/14/94022678-bc7a-4d79-b4ac-d0e6185bf378.html --------------------编程问答-------------------- 学习学习,同样关注! --------------------编程问答-------------------- 还有人解决了,贴下方案 --------------------编程问答-------------------- 用Java
知道错了吧


补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,