咨询在SoapUI中为SOAP WSDL请求配置用户名与密码的方法
解决方案:在SOAP Header中添加用户名密码验证
当然可以在SOAP请求的Header块中添加用户名和密码验证参数,具体实现取决于服务提供商要求的验证规范,常见两种方式如下:
1. WS-Security UsernameToken(标准SOAP身份验证)
这是SOAP服务最常用的身份验证规范,直接在Header中添加符合WS-Security标准的UsernameToken节点即可,示例代码如下:
<soap:Envelope xmlns:bpm="http://test.co/" xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <soap:Header> <wsse:Security soap:mustUnderstand="true"> <wsse:UsernameToken> <wsse:Username>你的用户名</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">你的密码</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <bpm:getTransactionById> <bpm:referenceId>fgdfgdgfdfgdfgd</bpm:referenceId> </bpm:getTransactionById> </soap:Body> </soap:Envelope>
注意:原代码中
dpm:getTransactionById可能是笔误,需与命名空间bpm保持一致。
在SoapUI中也可以通过专门的WS-Security编辑器配置:右键请求 → 选择Show WS-Security Editor,添加UsernameToken并填入账号密码,SoapUI会自动生成符合规范的Header,比手动编写更稳妥。
2. 自定义Header参数(服务指定格式)
如果服务要求自定义格式的验证字段,只需在Header中添加对应节点即可,字段名和命名空间需与服务提供商确认,示例:
<soap:Envelope xmlns:bpm="http://test.co/" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <bpm:AuthCredentials> <bpm:Username>你的用户名</bpm:Username> <bpm:Password>你的密码</bpm:Password> </bpm:AuthCredentials> </soap:Header> <soap:Body> <bpm:getTransactionById> <bpm:referenceId>fgdfgdgfdfgdfgd</bpm:referenceId> </bpm:getTransactionById> </soap:Body> </soap:Envelope>
关于SoapUI属性面板失效的说明
你之前用默认属性面板配置无效,是因为该面板的参数属于SoapUI的全局/项目属性,并非服务期望的请求Header内的验证属性,直接在XML Header中添加对应内容才是符合服务要求的配置方式。
内容的提问来源于stack exchange,提问作者md ni
相关产品推荐
相关产品推荐

