.NETでWebサービス

Webサービス

backyard.hatenablog.com

WEB参照

サービス側にメソッド、リクエスト、レスポンスクラスを作成。下記のように記述する。

サービス側(WebServiceTest1.asmx.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using WebServiceForAsmx.Data.Request;
using WebServiceForAsmx.Data.Response;

namespace WebServiceForAsmx.Service
{
    /// <summary>
    /// WebServiceTest1 の概要の説明です
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。
    // [System.Web.Script.Services.ScriptService]
    public class WebServiceTest1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World!!";
        }

        [WebMethod]
        public string HelloWorld2(string s)
        {
            return "Hello World -> " + s;
        }

        [WebMethod]
        public ResponsePersonData HelloWorld3(RequestPerson reqData)
        {
            ResponsePersonData resData = new ResponsePersonData();
            resData.Name = reqData.Name;
            resData.Address = reqData.Address;
            return resData;
        }
    }
}
クライアント側
private void button1_Click(object sender, EventArgs e)
{
    WebServiceTest1.WebServiceTest1SoapClient c = new WebServiceTest1.WebServiceTest1SoapClient();
    
    MessageBox.Show(c.HelloWorld());
    
    MessageBox.Show(c.HelloWorld2("aaaaaa"));

    WebServiceTest1.RequestPerson reqData = new WebServiceTest1.RequestPerson();
    reqData.Name = "aida";
    reqData.Address = "Tokyo";
    WebServiceTest1.ResponsePersonData resData = c.HelloWorld3(reqData);
    MessageBox.Show(resData.Name +" - "+ resData.Address);
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="WebServiceTest1Soap" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:50137/Service/WebServiceTest1.asmx"
                binding="basicHttpBinding" bindingConfiguration="WebServiceTest1Soap"
                contract="WebServiceTest1.WebServiceTest1Soap" name="WebServiceTest1Soap" />
        </client>
    </system.serviceModel>
</configuration>