問題:
最近公司與陶氏SAP對接時,陶氏IT要求我們通過SoapUI調用接口時,要讓SoapUI工具里面輸入用戶名和密碼才可以調用。
CSDN高分提問:
為此還在CSDN中出高分提了一個問題,如下:
“一般的我們做Soap接口時候,在程序中我們一般都是把用戶名和密碼寫在SoapHeader里面,但是如何編碼,可以把用戶名和密碼傳到SoapUI屬性中的用戶名和密碼里面呢?
net如何把用戶名和密碼傳到SoapUI屬性里面?”
但一直沒來回答,只好自己慢慢研究,通常我們接口時,用戶名和密碼都是在SoapHeader里面,再者因為沒了解SoapUI工具輸入的用戶名和密碼的機制,直接通過抓包工具看到 Base Authorization才慢慢的才到方向,
所以這里記錄一下,以分享給遇到相同問題的同學們。

解決的方法:
(1).這種驗證方式流程是,如果在瀏覽中打開地址時,會彈出輸入用戶名和密碼,只有當用戶名和密碼輸入正確后,接口地址才能正常顯示。
(2).實際上SoapUI工具中的用戶名和密碼方式使用的認證方式是 “基本身份驗證”,所以需要在IIS中把 “身份驗證”方式中 “基本身份驗證”啟用,原先默認的 “匿名身份驗證”方式禁用。

(3).接口中不需要做修改。
(4).客戶端調用:
private void button1_Click(object sender, EventArgs e) { ServicePointManager.ServerCertificateValidationCallback += dowapi.Service1.RemoteCertificateValidate;//驗證服務器證書回調自動驗證 dowapi.Service1 serverapi = new dowapi.Service1(); //驗證用戶名和密碼 string username = "username"; string password = "password"; string url = "https://xxx/xx.asmx?wsdl/"; CredentialCache mycache = new CredentialCache(); mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password)); serverapi.Credentials = mycache; string returnmessage = serverapi.ShipmentDeliveryChinaChoice_Request_MT(action, sb.ToString()); }
