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

如何在SOAP客户端请求中传递Bearer Token

如何为基于SOAP的API调用正确设置Bearer Token授权

针对SoapHttpClientProtocol子类的SOAP客户端,你可以通过以下两种可靠方式添加Bearer Token授权:

方法1:重写GetWebRequest方法(推荐,全局生效)

SoapHttpClientProtocol没有直接暴露Authorization属性,最稳定的方式是重写它的GetWebRequest方法,确保每次请求发送前自动注入授权头。

如果你的SoapServiceClient是通过WSDL生成的类(继承自SoapHttpClientProtocol),可以创建子类来扩展功能:

public class AuthenticatedSoapServiceClient : SoapServiceClient
{
    private readonly string _bearerToken;

    public AuthenticatedSoapServiceClient(string bearerToken)
    {
        _bearerToken = bearerToken;
    }

    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest request = base.GetWebRequest(uri);
        if (!string.IsNullOrEmpty(_bearerToken))
        {
            // 注意:Bearer与token之间必须加空格,这是OAuth2标准格式
            request.Headers.Add("Authorization", $"Bearer {_bearerToken}");
        }
        return request;
    }
}

使用方式:

var cs = new AuthenticatedSoapServiceClient(generatedtoken);
cs.Timeout = 99999999; 
cs.Url = "https://gateway.client.com/v1";
object response = cs.CreateSession(createSessionRequest);

方法2:直接添加HTTP请求头(单次请求生效)

如果仅需给特定请求添加Token,可以直接操作客户端的Headers集合:

SoapServiceClient cs = new SoapServiceClient();
cs.Timeout = 99999999; 
cs.Url = "https://gateway.client.com/v1";

// 注意Bearer与token之间的空格
cs.Headers.Add("Authorization", $"Bearer {generatedtoken}");

object response = cs.CreateSession(createSessionRequest);

关键注意事项

  • 格式正确性:Bearer和token之间必须保留空格,这是OAuth2 Bearer Token的强制标准,缺少空格会导致授权失败。
  • Headers重置问题:部分场景下SoapHttpClientProtocol会在请求后重置Headers集合,如果遇到授权丢失的情况,优先使用方法1来确保全局生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:13:19