我为我的Web服务实现了客户端.每个Web方法的自动生成文件包含对Web服务端点的硬编码绑定:
soap_endpoint = "http://localhost/MyService.asmx";
Run Code Online (Sandbox Code Playgroud)
它适用于开发目的,但在将其推送到PROD之前,我需要用PROD Web服务地址替换这些字符串.
是否可以管理gSOAP,以便生成此字符串以放入某些"外部"变量?
或者我应该在每次部署之前替换那些终点值?
谢谢.
我试图建立一个多线程的Web服务.单线程正在工作,在我的主要功能中我使用这个:
int main(int argc, char **argv) {
CardSoapBindingService CardSrvc;
Config Conf ;
Conf.update();
int port = Conf.listener_port;
if (!port)
CardSrvc.serve();
else {
if (CardSrvc.run(port)) {
CardSrvc.soap_stream_fault(std::cerr);
exit(-1);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我想要多线程,所以我查看了文档并找到了他们的例子,我尝试了我的代码.编译时我得到这个错误:
main.cpp:在函数int main(int, char**)':
main.cpp:56: error:soap_serve'未声明(首先使用此函数)
main.cpp:56:错误:(每个未声明的标识符只报告它出现的每个函数一次.)
main.cpp:在函数void* process_request(void*)':<br>
main.cpp:101: error:soap_serve'未声明(首先使用此函数)
make:***[main.o] Fehler 1
我怎样才能使这个工作?
我对 gSoap 有疑问。我通过运行以下命令生成文件:
wsdl2h -o calc.h http://www.genivia.com/calc.wsdl
soapcpp2 -i -j -I/usr/share/gsoap/import calc.h
Run Code Online (Sandbox Code Playgroud)
之后,我将这些文件包含到我的项目中
轮廓:
TARGET = calc
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp\
test/soapC.cpp\
test/soapcalcProxy.cpp\
HEADERS += mainwindow.h \
test/soapcalcProxy.h \
test/soapH.h \
test/soapStub.h \
FORMS += mainwindow.ui
Run Code Online (Sandbox Code Playgroud)
主程序
#include "mainwindow.h"
#include <QApplication>
#include "test/soapcalcProxy.h"
#include "test/calc.nsmap"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
calcProxy service;
MainWindow w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
现在我有很多错误,其中包括
soapC.cpp:187: error: undefined reference to `soap_lookup_type'
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些答案,但只找到了有关的信息stdsoap2.cpp(我必须将其包含在我的项目中)。我有 gSoap 2.8,但没有这个文件。我只有stdsoap2.h。
我应该做什么?
无论如何,我可以打印序列化的 xml 消息(使用 gsoap)。
例如:
soap_serialize_ns1__Response(soap, &ns2__UpdatedResponse);
Run Code Online (Sandbox Code Playgroud)
我希望能够看到序列化 (xml) 的样子。
有谁知道怎么做?
我们将 gsoap 用于为运行 Linux 的 blackfin 实现的 C 客户端和服务器 Web 服务。
我们不在应用程序中使用任何 malloc。但是我们看到内存使用量随着时间的推移而攀升。我们正在使用 soap_end 在通话结束时进行清理。但是当调用被反复调用时内存使用量慢慢增加,可能是因为内存碎片。这也会影响系统的性能
在不经常使用soap_malloc 的情况下,gsoap 的首选用法是什么。例如:如果我们使用静态数组等会有所帮助吗?
谢谢,
恩克尔