1. 程式人生 > 其它 >C#對接金蝶EAS WebService 啟用安全模式呼叫

C#對接金蝶EAS WebService 啟用安全模式呼叫

第一步:先把webservice引入到專案中

 

 

第二步:使用

public static CookieContainer c = new CookieContainer();//定義Cookie容器
/// <summary>
/// 金蝶登入介面
/// </summary>
/// <returns></returns>
private WSContext JinDieLogin()
{
  System.Net.ServicePointManager.Expect100Continue = false;
  EASLoginProxyService service = new EASLoginProxyService();//登入服務
  service.CookieContainer = c;//使用同一個Cookie容器


  WSContext ctx = service.login(jinDieConfigInfo.userName, jinDieConfigInfo.password, jinDieConfigInfo.slnName, jinDieConfigInfo.dcName, jinDieConfigInfo.language, jinDieConfigInfo.dbType);//登入引數,根據自己實際填寫
  return ctx;
}

/// <summary>
/// 開票申請單
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Data"></param>
/// <returns></returns>
public JinDieEASResponse Invoicing<T>(T Data)
{

  var context = JinDieLogin();//呼叫登入介面
  WSOkWebServiceFacadeSrvProxyService _jindieService = new WSOkWebServiceFacadeSrvProxyService();//業務服務
  _jindieService.CookieContainer = c;//使用同一個Cookie容器
  _jindieService.SessionId = new KDSessionId() { SessionId = context.sessionId };
  var resultData = _jindieService.invoicing(SurroundData(Data));//收款單介面
  return Serializer.Deserialize<JinDieEASResponse>(resultData);

}

“登入服務”與“業務服務”使用就完成了,但是實際使用會發現 _jindieService.SessionId 會點不出來。

這是因為需要我們手動新增,我們修改一下引入的webservice

第一步:

 

 

在引入webservice 業務服務類中,新增紅框的內容

 

 

 

 

 

public class KDSessionId : SoapHeader
{
  public string SessionId;//變數名與介面定義同名
}

public KDSessionId SessionId;

 

第二步:呼叫的方法需要用“SoapHeader”特性標記  [SoapHeader("SessionId")]

 

 

 完.