http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 里面有天气的图标。 添加WebServiceHelper.csusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Configuration; using System.CodeDom; using System.CodeDom.Compiler; using System.Net; using System.Web.Services; using System.Web.Services.Description; using Microsoft.CSharp; namespace ZJPortGisLib { public static class WebServiceHelper { /// <summary> /// 动态调用WebService /// </summary> /// <param name="url">WebService地址</param> /// <param name="methodname">方法名(模块名)</param> /// <param name="args">参数列表</param> /// <returns>object</returns> public static object InvokeWebService(string url, string methodname, object[] args) { return InvokeWebService(url, null, methodname, args); } /// <summary> /// 动态调用WebService /// </summary> /// <param name="url">WebService地址</param> /// <param name="classname">类名</param> /// <param name="methodname">方法名(模块名)</param> /// <param name="args">参数列表</param> /// <returns>object</returns> public static object InvokeWebService(string url, string classname, string methodname, object[] args) { string @namespace = "ServiceBase.WebService.DynamicWebLoad"; if (classname == null || classname == "") { classname = WebServiceHelper.GetClassName(url); } //获取服务描述语言(WSDL) WebClient wc = new WebClient(); Stream stream = wc.OpenRead(url + "?WSDL"); ServiceDescription sd = ServiceDescription.Read(stream); ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); sdi.AddServiceDescription(sd, "", ""); CodeNamespace cn = new CodeNamespace(@namespace); //生成客户端代理类代码 CodeCompileUnit ccu = new CodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn, ccu); CSharpCodeProvider csc = new CSharpCodeProvider(); ICodeCompiler icc = csc.CreateCompiler(); //设定编译器的参数 CompilerParameters cplist = new CompilerParameters(); cplist.GenerateExecutable = false; cplist.GenerateInMemory = true; cplist.ReferencedAssemblies.Add("System.dll"); cplist.ReferencedAssemblies.Add("System.XML.dll"); cplist.ReferencedAssemblies.Add("System.Web.Services.dll"); cplist.ReferencedAssemblies.Add("System.Data.dll"); //编译代理类 CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu); if (true == cr.Errors.HasErrors) { System.Text.StringBuilder sb = new StringBuilder(); foreach (CompilerError ce in cr.Errors) { sb.Append(ce.ToString()); sb.Append(System.Environment.NewLine); } throw new Exception(sb.ToString()); } //生成代理实例,并调用方法 System.Reflection.Assembly assembly = cr.CompiledAssembly; Type t = assembly.GetType(@namespace + "." + classname, true, true); object obj = Activator.CreateInstance(t); System.Reflection.MethodInfo mi = t.GetMethod(methodname); return mi.Invoke(obj, args); } private static string GetClassName(string url) { string[] parts = url.Split('/'); string[] pps = parts[parts.Length - 1].Split('.'); return pps[0]; } } } 调用 //天气初始化 private void WeatherLoad() { string url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"; string[] arg = new string [1]; arg[0] = "杭州"; try { object weather = ZJPortGisLib.WebServiceHelper.InvokeWebService(url, "getWeatherbyCityName", arg); string[] h = (string[])weather; this.Literal1.Text = "<li><img src="Images/weather/a_" + h[9] + "" mce_src="Images/weather/a_" + h[9] + "" style='width:20px;height:20px;' /></li><li>" + Weather(h[6]) + "</li><li>" + WeatherTemp(h[5]) + "</li>"; } catch (Exception ex) { } } //切分天气文字 private string Weather(string wea) { string[] arr = wea.Split(' '); if (arr.Length == 2) { return arr[1].ToString().Trim(); } return ""; } //切分温度 private string WeatherTemp(string tem) { string[] arr = tem.Split('/'); if (arr.Length == 2) { return arr[0].ToString().Trim() + "-" + arr[1].ToString().Trim(); } return ""; }