我用c++创建了一个GSOAP客户端应用程序,用于调用EWS方法。我的EWS是一个https URL。我只使用正确的凭据,但我得到的响应如下。
HTTP/1.1 401未经授权缓存控制:专用服务器:Microsoft IIS/7.5X-AspNet-版本:2.0.50727设置Cookie:exchangecookie=b56b1f57339240a88983be18ce6a50ad;expires=2013年1月30日星期三10:59:16 GMT;路径=/;HttpOnlyWWW身份验证:协商WWW身份验证:NTLMX-Powered-By-ASP.NET日期:2012年1月30日星期一10:59:16 GMT连接:关闭内容长度:0
下面我给出了我的代码片段。
ExchangeServiceBindingProxy *proxy = new ExchangeServiceBindingProxy();
proxy->soap_endpoint = "https://xxxx/EWS/exchange.asmx";
proxy->userid = "xxxxx";
proxy->passwd= "xxxxx";
proxy->recv_timeout = 300;
proxy->send_timeout = 300;
proxy->version = ns3__ExchangeVersionType__Exchange2010;
soap_ssl_init();
if (soap_ssl_client_context(proxy,SOAP_SSL_NO_AUTHENTICATION, NULL, NULL, NULL,NULL,NULL)){ exit(1);}
请告诉任何人可能出了什么问题。
谢谢。
使用cc-DWITH_NTLM(或在获胜时使用/DWITH_LNTLM)重新编译源代码,以启用gSOAP NTLM身份验证协议。