我正在尝试使用gSoap连接到使用https保护的Web服务。但是,当我使用https url运行wsdl2h时,它会抛出以下错误:
Cannot connect to https site: no SSL support, please rebuild wsdl2h with SSL or download the files and rerun wsdl2h
我正在Fedora Core 14上构建。我已经使用yum安装了openssl-devel和zlib-devel。我错过了什么?
默认情况下,wsdl2h的构建不支持SSL。 gsoap发行版的wsdl代码文件夹中的README.txt文件包含以下内容:
使用SSL进行WSDL文件的HTTPS传输
您必须使用“make secure”构建WSDL解析器,以构建可以访问HTTPS安全站点的启用SSL的wsdl2h版本。
如果您没有安装OpenSSL,则无法构建wsdl2h的SSL安全版本。在这种情况下,我们建议下载WSDL和模式文件,以便使用不支持SSL的wsdl2h工具进行处理。
因此,您需要手动下载.wsdl文件并在其上运行现有的wsdl2h或使用make secure重建wsdl2h,以便它知道包含SSL库和对https的支持。
好吧,至少2.8“安全”只是不起作用。诀窍是将BOTH CFLAGS和CFLAGS定义为-DWITH_OPENSSL,将LDFLAGS定义为-lssl:
CFLAGS='$(CFLAGS) -DWITH_OPENSSL' CXXFLAGS='$(CXXFLAGS) -DWITH_OPENSSL' \
CPPFLAGS='$(CPPFLAGS) -DWITH_OPENSSL' LDFLAGS='$(LDFLAGS) -lssl' ./configure \
--prefix=/usr \
--exec-prefix='$${prefix}' \
--mandir='$${datadir}/man' \
--infodir='$${datadir}/info' \
--enable-ipv6 \
--enable-samples
我通过使用Visual Studio 2005构建wsdl2h.exe解决了这个问题,并使用我编译的新wsdl2h.exe运行脚本。
gsoap(2.8.17)中的项目位置是“gsoap-2.8.17 \ gsoap \ VisualStudio2005 \ wsdl2h”
我不得不在项目属性的预处理器中添加'WITH_OPENSSL'。另外,我必须在项目中添加一些include和lib目录以及一些.c文件来解决编译错误。
关键是使用'WITH_OPENSSL'选项构建wsdl2h.exe。这将解决问题。