c# webService 自定义soap头??急急急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# webService 自定义soap头??急急急相关的知识,希望对你有一定的参考价值。

本人webservice使用不熟请高手指点,平时使用的时候都是在客户端点右键 添加webservice的引用然后 这么使用的,这种好定义soap头。后来去网上找了一个动态引用webserivice的方法 就是客户端不用点右键添加webservice引用而是通过代码进行 动态添加引用 这部分的代码如下
public class WebServiceAgent

private object agent;
private Type agentType;
private const string CODE_NAMESPACE = "GNT.GFClient.WindowsWebServiceDefaultHotCity";
public WebServiceAgent(string url)

XmlTextReader reader = new XmlTextReader(url + "?wsdl");
//创建和格式化 WSDL 文档
ServiceDescription sd = ServiceDescription.Read(reader);
//创建客户端代理代理类
ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
sdi.AddServiceDescription(sd, null, null);
//使用 CodeDom 编译客户端代理类
CodeNamespace cn = new CodeNamespace(CODE_NAMESPACE);
CodeCompileUnit ccu = new CodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn, ccu);
Microsoft.CSharp.CSharpCodeProvider icc = new Microsoft.CSharp.CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);
agentType = cr.CompiledAssembly.GetTypes()[0];
agent = Activator.CreateInstance(agentType);

public object Invoke(string methodName, params object[] args)

MethodInfo mi = agentType.GetMethod(methodName);
return this.Invoke(mi, args);

public object Invoke(MethodInfo method, params object[] args)

try

return method.Invoke(agent, args);

catch (Exception ex)

string s= ex.Message;
return null;


public MethodInfo[] Methods

get

return agentType.GetMethods();


调用如图片 这个时候该怎么在客户端给我自定义的soap头赋值啊??PropertyInfo infor = agent.GetType().GetProperty("GFCSoapHeader"); infor是null

webservice 端代码如下
/// <summary>
/// GFCDataSerivice 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GFCDataSerivice : System.Web.Services.WebService


public GFCDataSerivice()


public GFCSoapHeader mySoapHeader = new GFCSoapHeader();
[System.Web.Services.Protocols.SoapHeader("mySoapHeader")]
[WebMethod]
public string HelloWorld()

if (mySoapHeader.UserName == "bai" && mySoapHeader.PassWord == "tao")

return "sucesss!";

else

return "Failed!";


请高手指点

参考技术A GFCSoapHeader是个类名,通过反射获取属性应该用属性名吧
public GFCSoapHeader SoapHeader

get
return mySoapHeader;
set
mySoapHeader=value;


PropertyInfo infor = agent.GetType().GetProperty("SoapHeader");

这样行吗追问

不行啊 这样还是null啊

以上是关于c# webService 自定义soap头??急急急的主要内容,如果未能解决你的问题,请参考以下文章

C#使用SOAP获取webservice实例解析

java axis调用带有soap头(soapheader)的.net webservice

在webservice使用者方法中插入行以添加SOAP头

在c#中,用soap调用webservice,发送消息并取得webservice方法里返回的内容,用http 的方法

c# WebService 接收参数 急!!!急!!!

C#实现SOAP调用WebService