DLLになりますC#コードでのWebサービスは、メソッド呼び出しを実装します

多くの場合、異なる状況下でWebサービスを呼び出す遭遇した仕事で、私はほとんどのも、このような状況が発生し、サイトは通常の使用を達成するために多くの情報を見つけ、コードは今あなたと共有します:

1、で上記の手順を使用して第1ヘッド。

1  使用System.CodeDom.Compilerと、
2  使用System.Web.Services.Descriptionと、
3  使用System.CodeDomと、
4  使用するSystem.Reflectionと、

 

2、WebサービスDLLをパッケージングする方法を作成します

1          プライベート BOOL CreateWebServicesDll()
 2          {
 3。             // 現在のディレクトリ内の実行可能ファイルを取得し
4              パス= AppDomain.CurrentDomain.BaseDirectory + " MyWebServices.dll " ;
 5              IF(File.Exists(パス)== falseに// NOが存在する場合ファイルフォルダが作成されている
6。             {
 7。                 File.Delete(パス);
 8              }
 。9              試みる
10              {
 11                  // 1. WebクライアントダウンロードWSDL情報。
12は、                  WebクライアントのWeb = 新新Webクライアント();
 13                  ストリームストリーム= web.OpenRead(" http://192.168.100.101:8090/PrintService/MaterialService.asmx?wsdl " );
 14                  // 2. WSDLドキュメントを作成し、フォーマットします。
15                  ServiceDescription説明= ServiceDescription.Read(ストリーム);
 16                  // 3.クライアントプロキシプロキシクラスを作成します。
17                  ServiceDescriptionImporter輸入= 新しい新しいServiceDescriptionImporter();
 18は                  = importer.ProtocolName " 石鹸" ; // 指定されたアクセスプロトコル。
19                 = ServiceDescriptionImportStyle.Client importer.Style; // クライアントプロキシを生成します。
20                  importer.CodeGenerationOptions =のCodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
 21  
22                  importer.AddServiceDescription(説明、NULLNULL); //は、WSDLドキュメントを追加します。
23  
24                  // 4.のCodeDOMは、クライアントプロキシクラスをコンパイルします。
25                  CodeNamespaceのnmspace = 新新 CodeNamespace(); //は、名前空間のプロキシクラス、デフォルトのグローバル空間を追加します。
26は、                  CodeCompileUnitユニット= 新新CodeCompileUnit();
27                  unit.Namespaces.Add(nmspace)。
28  
29                  ServiceDescriptionImportWarnings警告= importer.Import(nmspace、単位)。
30                  CodeDomProviderプロバイダ= CodeDomProvider.CreateProvider(" CSHARP " )。
31  
32                  CompilerParametersパラメータ= 新しいCompilerParameters()。
33                  parameter.GenerateExecutable = ;
34                  parameter.OutputAssembly = " MyWebServices.dll "// 指定你所需的任何文件名。
35                  parameter.ReferencedAssemblies.Add(" System.dllの" )。
36                  parameter.ReferencedAssemblies.Add(" System.XML.dll " )。
37                  parameter.ReferencedAssemblies.Add(" System.Web.Services.dll " )。
38                  parameter.ReferencedAssemblies.Add(" のSystem.Data.dll " )。
39  
40                  CompilerResultsは=結果provider.CompileAssemblyFromDom(パラメータ、ユニット)。
41                  であれば(result.Errors.HasErrors)
 42                 {
 43                      // ディスプレイエラーメッセージコンパイラ     
44は                     戻り falseに;
 45                  }
 46である                
47              }
 48             キャッチ(例外EX)
 49              {
 50                  リターン falseに51である             }
 52が 
53で             返す trueに54です          }

コードはMyWebServices.dllこのファイルは、我々はdllファイルを生成したい名前があることに注意してください、あなたが会議をカスタマイズすることができ、そのURLアドレスは、Webサービスの終了時に必要とは?WSDLが続く先住所

3.反射コール

1          パブリック 文字列CallWebservices()
 2          {
 3              // 現在のファイルEXCのディレクトリ
。4              文字列のパス= AppDomain.CurrentDomain.BaseDirectory + " MyWebServices.dll " ;
 5              IF(Directory.Exists(パス)== falseに// 何が存在しない場合ファイルフォルダが作成されている
6。             {
 7。                 CreateWebServicesDll();
 8              }
 。9  
10              アセンブリASM = NULL ;
 11              タイプTは、= NULL ;
 12は、 
13であります             Assembly.LoadFrom = ASM(" MyWebServices.dll " );
 14              T = asm.GetType(" MaterialSupplierService " );
 15  
16              オブジェクト O = Activator.CreateInstance(T);
 17              METHODINFO方法t.GetMethod =(" GeSnIdListByBigBox ")。// メソッド名は、Webサービスを呼び出す必要がある
18である             オブジェクト []引数= 新しい新しい オブジェクト [] { B1900420193  };   // Webサービスに必要な伝送パラメータを
19              文字列結果= method.Invoke(O、引数)として文字列。
20  
21              リターン結果。
22          }

 

おすすめ

転載: www.cnblogs.com/billy1688/p/11286626.html