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")]
完.