问题:
最近公司与陶氏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()); }