gSOAP HTTP身份验证

时间:2013-08-21 08:20:53

标签: c++ http-authentication gsoap

我正在使用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调用相同的函数时,服务器将毫无问题地获取信息。

如果有人能帮助我解决问题,我感激不尽。谢谢你的关注。

1 个答案:

答案 0 :(得分:2)

我使用tcpdump来捕获Web服务服务器和客户端之间发送的包,我发现当客户端调用Web服务的功能时没有发送http头。所以我在gSOAP的文档中做了一些搜索,发现了这句话:

  

客户端可以使用http://前缀。缺席时,没有HTTP头   已发送,并且不会将基于HTTP的信息传达给   服务。

它解决了我的问题...