fel
le

Web Service

Készítsünk olyan webszolgáltatást, amely három egyszerű funkciót támogat:

  • két szám összeadása,
  • login adott felhasználónévvel és jelszóval,
  • whoami: ha már loginolt, visszaadja a loginkor megadott usernevet.

Készítsünk hozzá kliens.

Szerver (Web Service) forráskódja

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;

namespace WebService1
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {
        //string nev;
        //ilyet nem lehet, mert ez single call

        [WebMethod]
        public int osszead(int a,int b)
        {
            return a+b;
        }

        [WebMethod(EnableSession=true)]
        public void login(string nev,string acc)
        {
            Session["nev"] = nev;
        }
        [WebMethod(EnableSession = true)]
        public string whoami()
        {
            return Session["nev"] as string;
        }
    }
}
 

App.Config forráskódja kliens oldalon

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <ConsoleApplication1.Properties.Settings>
            <setting name="ConsoleApplication1_localhost_Service1" serializeAs="String">
                <value>http://localhost:49371/Service1.asmx</value>
            </setting>
        </ConsoleApplication1.Properties.Settings>
    </applicationSettings>
</configuration>
 

Kliens forráskódja

using System;
using System.Collections.Generic;
using System.Text;



namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            ConsoleApplication1.localhost.Service1 nev = new localhost.Service1();
            nev.CookieContainer = new System.Net.CookieContainer();
            Random rnd = new Random();
            nev.login("aga", "aga2");
            string n = nev.whoami();
            Console.WriteLine(n); ;
           
            Console.ReadLine();
        }
    }
}
 

Kliens oldali Cookie engedélyezés

Ez szükséges, hogy menjen a szerver oldalon a Session kezelés. Két módja van:

  • p.CookieContainer = new System.Net.CookieContainer();
  • app.config fileban a "binding" szekcióban a allowCookies="true" beállítás

<binding name="matematikaSoap"
    closeTimeout="00:01:00"
    openTimeout="00:01:00"
    receiveTimeout="00:10:00"
    sendTimeout="00:01:00"
    allowCookies="true"
 
Hernyák Zoltán
2013-04-20 09:56:37