재우니의 블로그

 

웹서비스 asmx 와 응용프로그램 간의 C# 구현

 

통신할 웹서버스 파일 하나를 생성한다. 클래스 내부에 struct 를 구현한다.

 

 

public struct USERINFO // 받는 필드 정의

{

 

public string XSTAT; // 전송건수

public string XMSGS; // 전송건수

public string XDATS; // 전송건수

public string XTIMS; // 전송건수

public string XROWS; // 전송건수

 

public USERINFODETAIL[] arrDatas;

 

}

 

public struct USERINFODETAIL

{

public string empCode; //사번

public string LoginID; //로긴 ID

public string passWd; //Password

public string empName; //이름

public string Gender; //성별

public string BirthDay; //생일

public string MobilNP; //핸폰

public string CurrentAddressM; //주소1

public string CurrentZipcode; //우편번호

public string DeptCode; //부서코드

public string DeptName; //부서명

public string JobPosition; //직급코드

public string JobPositionName; //직급명

public string JobDuty; //직책코드

public string JobDutyName; //직책명

public string MailID; //메일 ID

public string PRIMARYYN; // 겸직구분

public string OfficePhone; // 사내전화번호

public string ActiveUser; //퇴사여부 N 사용 Y 퇴사

}

 

 

Struct 를 구현하고 나서 해당 값을 받기 위한 메소드를 생성한다.

 

[WebMethod]

public void LagacySetUserInfo(USERINFO commonData)

{

try

{

 

if (commonData.arrDatas != null)

{

 

구현 후, 오류 나지 않으면 해당 소스를 복사해서 특정 폴더에 파일을 생성하여 소스를 붙여 넣습니다.

파일명은 user.wsdl 이라고 명명합니다.

 

wsdl /out:SetCodeInfo_SyncService.cs d:\code.wsdl

wsdl /out:SetDeptInfo_SyncService.cs d:\dept.wsdl

wsdl /out:SetUserInfo_SyncService.cs d:\user.wsdl

 

cmd 쉘로 위와 같이 특정 폴더 위치에서 실행하면 /out 의 명시된 파일명(SetUserInfo_SyncService.cs

) 으로 생성됩니다.

 

생성된 SetUserInfo_SyncService.cs 파일을 응용프로그램이나 command 프로젝트 내부에 파일을

할당합니다.

 

어플단에서 이제 웹서비스를 호출하는 방법은 아래와 같습니다.

 

 

if (dsUser != null && dsUser.Tables[0].Rows.Count > 0)

{

USERINFO userinfo = new USERINFO();

USERINFODETAIL[] userdetails = new USERINFODETAIL[dsUser.Tables[0].Rows.Count];

 

for (int i = 0; i < dsUser.Tables[0].Rows.Count; i++)

{

    USERINFODETAIL userinfodetail = new USERINFODETAIL();

 

    userinfodetail.ActiveUser = "N"; //dsUser.Tables[0].Rows[i]["ActiveUser"].ToString();

    userinfodetail.BirthDay = dsUser.Tables[0].Rows[i]["BirthDay"].ToString();

    userinfodetail.CurrentAddressM = dsUser.Tables[0].Rows[i]["CurrentAddress"].ToString();

    userinfodetail.CurrentZipcode = dsUser.Tables[0].Rows[i]["CurrentZipcode"].ToString();

    userinfodetail.DeptCode = dsUser.Tables[0].Rows[i]["DeptCode"].ToString();

    userinfodetail.DeptName = dsUser.Tables[0].Rows[i]["DeptName"].ToString();

    userinfodetail.empCode = dsUser.Tables[0].Rows[i]["empCode"].ToString();

    userinfodetail.empName = dsUser.Tables[0].Rows[i]["empName"].ToString();

    userinfodetail.Gender = dsUser.Tables[0].Rows[i]["Gender"].ToString();

    userinfodetail.JobDuty = dsUser.Tables[0].Rows[i]["JobDuty"].ToString();

    userinfodetail.JobDutyName = dsUser.Tables[0].Rows[i]["JobDutyName"].ToString();

    userinfodetail.JobPosition = dsUser.Tables[0].Rows[i]["JobPosition"].ToString();

    userinfodetail.JobPositionName = dsUser.Tables[0].Rows[i]["JobPositionName"].ToString();

    userinfodetail.LoginID = dsUser.Tables[0].Rows[i]["LoginID"].ToString();

    userinfodetail.MailID = dsUser.Tables[0].Rows[i]["MailID"].ToString();

    userinfodetail.MobilNP = dsUser.Tables[0].Rows[i]["MobilNP"].ToString();

    userinfodetail.OfficePhone = dsUser.Tables[0].Rows[i]["OfficePhone"].ToString();

    userinfodetail.PRIMARYYN = dsUser.Tables[0].Rows[i]["PRIMARYYN"].ToString();

 

    userdetails[i] = userinfodetail;

}

 

userinfo.arrDatas = userdetails;

 

SetUserInfo setuserinfo = new SetUserInfo();

setuserinfo.Timeout = 1000000;

setuserinfo.LagacySetUserInfo(userinfo);

}