C#呼叫WebService服務(動態呼叫)
阿新 • • 發佈:2019-02-14
1 建立WebService
- using System;
- using System.Web.Services;
- namespace WebService1
- {
- /// <summary>
- /// Service1 的摘要說明
- /// </summary>
- [WebService(Namespace = "http://tempuri.org/", Description="測試服務")]
-
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.ComponentModel.ToolboxItem(false)]
- // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消對下行的註釋。
- [System.Web.Script.Services.ScriptService]
- publicclass Service1 : System.Web.Services.WebService
- {
- [WebMethod(Description="Hello World")]
-
publicstring HelloWorld()
- {
- return"Hello World";
- }
- [WebMethod(Description="A加B")]
- publicint Add(int a, int b)
- {
- return a + b;
- }
- [WebMethod(Description="獲取時間")]
- publicstring GetDate()
- {
-
return
- }
- }
- }
服務建立後,在瀏覽器中輸入服務地址,可以看到如下圖所示。
2 通過Visual Studio新增服務引用
通過Visual Studio新增服務引用相當方便,只需要在Visual Studio中選擇新增服務引用,便可以生成代理類,在專案中通過代理呼叫服務,如下圖所示。
新增服務引用以後,在專案解決方案中多了Service References和app.config,如下圖所示。
ServiceReference1就是上面新增的服務,app.config是服務的配置檔案,app.config裡面的配置大致如下,當服務地址改變時,修改endpoint裡的address即可。
- <!--app.config檔案配置-->
- <?xmlversion="1.0"encoding="utf-8"?>
- <configuration>
- <configSections>
- </configSections>
- <system.serviceModel>
- <bindings>
- <basicHttpBinding>
- <bindingname="Service1Soap"closeTimeout="00:01:00"openTimeout="00:01:00"
- receiveTimeout="00:10:00"sendTimeout="00:01:00"allowCookies="false"
- bypassProxyOnLocal="false"hostNameComparisonMode="StrongWildcard"
- maxBufferSize="65536"maxBufferPoolSize="524288"maxReceivedMessageSize="65536"
- messageEncoding="Text"textEncoding="utf-8"transferMode="Buffered"
- useDefaultWebProxy="true">
- <readerQuotasmaxDepth="32"maxStringContentLength="8192"maxArrayLength="16384"
- maxBytesPerRead="4096"maxNameTableCharCount="16384"/>
- <securitymode="None">
- <transportclientCredentialType="None"proxyCredentialType="None"
- realm=""/>
- <messageclientCredentialType="UserName"algorithmSuite="Default"/>
- </security>
- </binding>
- </basicHttpBinding>
- </bindings>
- <client>
- <endpointaddress="http://localhost:19951/Service1.asmx"binding="basicHttpBinding"
- bindingConfiguration="Service1Soap"contract="ServiceReference1.Service1Soap"
- name="Service1Soap"/>
- </client>
- </system.serviceModel>
- </configuration>
客戶端呼叫WebService
- //呼叫服務,結果如圖所示。
- staticvoid Main(string[] args)
- {
- ServiceReference1.Service1SoapClient client = new ServiceReference1.Service1SoapClient();
- //呼叫服務的HelloWorld方法
- string hello = client.HelloWorld();
- Console.WriteLine("呼叫服務HelloWorld方法,返回{0}", hello);
- //呼叫服務的Add方法
- int a = 1, b = 2;
- int add = client.Add(a, b);
- Console.WriteLine("呼叫服務Add方法,{0} + {1} = {2}", a, b, add);
- //呼叫服務的GetDate方法
- string date = client.GetDate();
- Console.WriteLine("呼叫服務GetDate方法,返回{0}", date);
- Console.ReadKey();
- }
- using System;
- using System.CodeDom;
- using System.CodeDom.Compiler;
- <