2024年4月20日发(作者:)
整理,内容来源于网络及本人实践】
前面整理了一篇关于VS2008实现简单的WebService的文章,但里面的调用是静态的,当
服务地址更改后,需要重新编译程序,对于很多应用来说是不现实的。本文介绍一下C#动
态调用WebService的方法。
1.实现
写个叫WebServiceHelper的类
[csharp] view plaincopyprint?
1. namespace webhelp
2. {
3. using System;
4. using ;
5. using ;
6. using m;
7. using ;
8. using er;
9. using ption;
10. using ols;
11. public class WebServiceHelper
12. {
13. #region InvokeWebService
14.
15. public static object InvokeAndCallWebService(string url, string methodname,
object[] args)
16. {
17. return AndCallWebService(url, null, methodname,
args);
18. }
19. public static object InvokeAndCallWebService(string url,/* string @namespace,
*/string classname, string methodname, object[] args)
20. {
21. string @namespace = "cWebCalling";
22. if ((classname == null) || (classname == ""))
23. {
24. classname = lassName(url);
25. }
26.
27. try
28. {
29. //获取WSDL
30. WebClient webClient = new WebClient();
31. Stream stream = ad(url + "?WSDL");
32. ServiceDescription description = (stream);
33. ServiceDescriptionImporter descriptionImporter = new
ServiceDescriptionImporter();
34. viceDescription(description, "", "");
35. CodeNamespace codeNamespace = new CodeNamespace(@namespace);
36.
37. //生成客户端代理类代码
38. CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
39. (codeNamespace);
40. (codeNamespace, codeCompileUnit);
41. CSharpCodeProvider codeProvider = new CSharpCodeProvider();
42.
43. //设定编译参数
44. CompilerParameters compilerParameters = new CompilerParameters();
45. teExecutable = false;
46. teInMemory = true;
47. ("");
48. ("");
49. ("");
50. ("");
51.
52. //编译代理类
53. CompilerResults codeResult =
eAssemblyFromDom(compilerParameters, codeCompileUnit);
54. if (true == ors)
55. {
56. Builder stringBuilder = new Builder();
发布评论