如何使用 HTTP Negotiate 向请求添加额外的标头?我添加了接口但功能BeginningTransaction & OnResponse
永远不会被打电话。
TNameSpaceHandler = class(TComObject, IInternetProtocol, IHttpNegotiate)
...
function BeginningTransaction(szURL, szHeaders: LPCWSTR; dwReserved: DWORD;
out szAdditionalHeaders: LPWSTR): HResult; stdcall;
function OnResponse(dwResponseCode: DWORD; szResponseHeaders, szRequestHeaders: LPCWSTR;
out szAdditionalRequestHeaders: LPWSTR): HResult; stdcall;
...
end;
我默默地假设你正在通过实施来拦截流量IInternetProcol
and the IInternetProtocolSink
and IInternetBindInfo
接口,并调用原来的IInternetProtocol
完成工作。在这种情况下,了解谁呼叫谁的方向非常重要。
如果原始处理程序想要附加标头,它将首先转换您的IInternetProtocolSink
into a IServiceProvider
接口(与QueryInterface
),然后调用QueryService
for an IHttpNegotiate
实例。为了方便起见,您可以添加当前对象实例并实现IHttpNegotiate
在同一个对象上,但这不是必需的。
当。。。的时候BeginTransaction
你的方法IHttpNegotiate
接到电话,得到一个IHttpNegotiate
上的实例ProtSink
开始呼叫,呼叫BeginTransaction
并在将标头传递给调用者之前添加标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)