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!";
请高手指点
public GFCSoapHeader SoapHeader
get
return mySoapHeader;
set
mySoapHeader=value;
PropertyInfo infor = agent.GetType().GetProperty("SoapHeader");
这样行吗追问
不行啊 这样还是null啊
以上是关于c# webService 自定义soap头??急急急的主要内容,如果未能解决你的问题,请参考以下文章
java axis调用带有soap头(soapheader)的.net webservice