linux环境下,使用gsoap方式对接webservice,在网络环境较差的情况下,会出现数据停止上传的情况,排查发现,线程卡在了调用gsoap接口的地方没有返回值了
解决方法是设置gsoap的超时时间,默认的超时时间配置都是0,即阻塞方式:
<span style="white-space:pre"> </span>memset(&m_SoapClient, 0, sizeof(struct soap));
soap_init(&m_SoapClient);
soap_set_mode(&m_SoapClient, SOAP_C_UTFSTRING);
m_SoapClient.send_timeout = 5;
m_SoapClient.recv_timeout = 5;
m_SoapClient.connect_timeout = 5;
m_SoapClient.accept_timeout = 5;
注意是在soap_init后面设置,否则soap_init函数又将超时时间置为0了