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

gSoap调用Exchange Online EWS API时soap->fpost截断超长Bearer令牌导致访问被拒的问题求助

gSoap调用Exchange Online EWS API时soap->fpost截断超长Bearer令牌导致访问被拒的问题求助

各位大佬好,我目前在使用gSoap对接Exchange Online的EWS API,最近碰到了一个头疼的问题,想请教下大家有没有解决思路:

我通过Azure AD OAuth方式获取的Bearer令牌长度超过了2048字符,但发现soap->fpost会把这个令牌截断——刚好卡在2040字符的位置,直接导致请求返回访问被拒的错误。

我已经尝试过以下操作,但问题依然没有解决:

  • 修改stdsoap2.h中的SOAP_BUFLEN参数为32K
  • 确认了soap->buf的实际大小确实是64K,但soap->fpost还是返回失败

下面是脱敏后的相关信息,方便大家排查:

完整的Bearer令牌(部分内容已删除)

eyJ0eXAiOiJKV1QiLCJub25jZSI6InpSMk1VMnFQXzVFV3AtaVNYQ0doR3NzTGNKdVhVVUJTNjlpdGNBNjBXV2siLCJhbGciOiJSUzI1NiIsIng1dCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyIsImtpZCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2FhNmM1M2IyLWI2YTUtNDlhNi1iNDY4LWZiZTczMGZmOTU0Yy8iLCJpYXQiOjE3NTI5MTg4NTEsIm5iZiI6MTc1MjkxODg1MSwiZXhwIjoxNzUyOTIyNzUxLCJhaW8iOiJrMlJnWUh 9.CkPN_fC6kxGH-oFex2zTqic6bCv2RyQba2hzsjl10JGngfprIaUY3jB3DfEK5VDL3d7ni_gdmsMjsBrHgCugW22H58wnyKnaBXi-GvBGbR8lNgFPn0Q6wZefwsVL7P1V25v2X4rdsOLh23GiYuycYiuGuWBHaeMgYMDyxx9fQd0U8QQI1IQLN1OJFbxjLOhrmen7qeQKTxGMElBONom1Liyrly275Tpg7uWVbr9_I8ZIHoVSV2y6PdRTwFsniy0kQqEW0OoaTzEDoqCQgWqDO8GU8e9gRNDywGeZKfaH4JDT2IwIhzxsweH7HVg03sQM_MC-RladSvC8rgOb81ce2Q

soap->buf中记录的请求内容(令牌已被截断)

POST /EWS/Exchange.asmx HTTP/1.1
Host: outlook.office365.com
User-Agent: gSOAP/2.8E
Content-Type: text/xml; charset=utf-8
Content-Length: 1348
X-AnchorMailbox: Adams@M365x70736779.OnMicrosoft.com
X-PreferServerAffinity: true
client-request-id: 99d33fef-721f-4c13-9820-889146292102
return-client-request-id: true
Connection: close
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6InpSMk1VMnFQXzVFV3AtaVNYQ0doR3NzTGNKdVhVVUJTNjlpdGNBNjBXV2siLCJhbGciOiJSUzI1NiIsIng1dCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyIsImtpZCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2FhNmM1M2IyLWI2YTUtNDlhNi1iNDY4LWZiZTczMGZmOTU0Yy8iLCJpYXQiOjE3NTI5MTg4NTEsIm5iZiI6MTc1MjkxODg1MSwiZXhwIjoxNzUyOTIyNzUxLCJhaW8iOiJrMlJnWUh <deleted for safety> 9.CkPN_fC6kxGH-oFex2zTqic6bCv2RyQba2hzsjl10JGngfprIaUY3jB3DfEK5VDL3d7ni_gdmsMjsBrHgCugW22H58wnyKnaBXi-GvBGbR8lNgFPn0Q6wZefwsVL7P1V25v2X4rdsOLh23GiYuycYiuGuWBHaeMgYMDyxx9fQd0U8QQI1IQLN1OJFbxjLOhrmen7qeQKTxGMElBONom1Liyrly275Tpg7uWVbr9_I8ZIHoVSV2y6PdRTwFsniy0kQqEW0OoaTzEDoqCQgWqDO8GU8e9gRNDywGeZKfaH4JDT2IwIhzxswe
SOAPAction: " http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder "

从上面的请求内容能明显看到,Authorization头里的Bearer令牌被截断,末尾的部分字符丢失了。想请教下大家,除了SOAP_BUFLEN之外,gSoap还有没有其他和缓冲区大小相关的参数需要调整?或者有没有其他方法可以解决这个令牌被截断的问题?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:58:09