我正在使用gSOAP 2.8.15,并且我正在尝试按照gsoap文档(http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.14)第19.14节中的说明实现HTTP身份验证。
唯一的区别是文档中引入的代码是用C语言编写的,但我用C ++编写。
以下是我的网络服务客户端代码
// The variable wsp is a instance of web service proxy generated by soapcpp2.
// The proxy is a sub-class of the class soap
wsp.userid = "user";
wsp.passwd = "password";
// call the function of web service
wsp.get_version(&result);
在服务器端,我使用这些代码来检查身份验证:
// The variable wss is the a instance of web service service generated by soapcpp2.
if (wss.userid == NULL || wss.passwd == NULL)
//......
问题是当我使用客户端代码调用Web服务的功能时,userid和passwd在服务器端始终为NULL。但是当我通过使用抢占式授权模式传递userid和passwd来使用soapUI调用相同的函数时,服务器将毫无问题地获取信息。
如果有人能帮助我解决问题,我感激不尽。谢谢你的关注。
答案 0 :(得分:2)
我使用tcpdump来捕获Web服务服务器和客户端之间发送的包,我发现当客户端调用Web服务的功能时没有发送http头。所以我在gSOAP的文档中做了一些搜索,发现了这句话:
客户端可以使用http://前缀。缺席时,没有HTTP头 已发送,并且不会将基于HTTP的信息传达给 服务。
它解决了我的问题...