You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中SOAP Web Service的HTTP Basic认证请求失败排查

VBA调用SOAP Web Service HTTP Basic认证失败排查

我在VBA中调用SOAP Web Service时,请求无法通过HTTP Basic认证环节。已知密钥和密码有效(其他代码可正常访问该服务),怀疑问题出在请求头或认证流程中。明确Content-Type头需设为text/xml,认证采用Basic HTTP Authentication形式。以下是认证相关VBA代码(敏感信息已替换为*****):

Sub CreateShip()
    
    Dim request As New MSXML2.XMLHTTP60
    Dim sEnv As String
    Dim response As New MSXML2.DOMDocument60

    Dim key As String
    key = "*****"
    Dim pswd As String
    pswd = "*****"
    
     With request
        .Open "Get", "https://devwebservices.purolator.com/EWS/V2/shipping/Shippingservice.wsdl", False
        .setRequestHeader "Content-Type", "text/xml"
        .setRequestHeader "Authorization", "Basic " & EncBase64(key & ":" & pswd)
        ' Request Envelope 
        .send
    End With
End Sub

Function EncBase64(strData As String) As String

    Dim objXML As MSXML2.DOMDocument60
    Dim objNode As MSXML2.IXMLDOMElement
    Dim arData() As Byte
    arData = StrConv(strData, vbFromUnicode)
    Set objXML = New MSXML2.DOMDocument60
    Set objNode = objXML.createElement("b64")
    objNode.DataType = "bin.base64"
    objNode.nodeTypedValue = arData
    EncBase64 = objNode.Text
    Set objNode = Nothing
    Set objXML = Nothing
    'Debug.Print strData
    'Debug.Print EncBase64
    
End Function

排查点与解决建议

  • 请求方法错误:SOAP请求标准方法为POST而非GET,当前代码使用Get会导致服务无法正确接收SOAP信封。需将.Open的第一个参数改为"POST",并在.send方法中传入SOAP信封内容sEnv,即.send sEnv。

  • 完善Content-Type头:SOAP 1.1规范要求Content-Type需包含编码声明,建议改为text/xml; charset=utf-8,同时确保头设置在.Open之后、.send之前。

  • 验证Base64编码正确性:取消EncBase64函数中的注释,打印编码结果,与手动用Base64工具编码key:pswd的结果对比。若不一致,检查StrConv(strData, vbFromUnicode)是否适配密钥和密码的编码格式,避免编码错误导致认证失败。

  • 简化认证方式:放弃手动构造Authorization头,改用XMLHTTP内置的.setCredentials方法,在.Open之后添加:

    .setCredentials key, pswd, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
    

    该方法会自动处理Basic认证的编码与头设置,避免手动编码出错。

  • 确保SOAP信封传入:当前代码中sEnv未赋值也未传入.send,POST请求必须携带SOAP信封作为请求体,否则服务会因缺少核心请求数据拒绝认证。

内容的提问来源于stack exchange,提问作者KAtkinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:45:19