使用C++编写服务端,JAVA开发客户端。
JAVA使用CXF,使用gsoap;
当发生以上错误,原因是由于SOAP版本不一致,解决方法:
在Service1Soap.nsmap文件中做如下修改:
//{"SOAP-ENV", "http://www.w3.org/2003/05/soap-envelope", "http://www.w3.org/2003/05/soap-envelope", NULL},
//{"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL},
{"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL},
{"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://schemas.xmlsoap.org/soap/encoding/", NULL},
{"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
{"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
{"ns2", "configprop.cxf.spinfosec.com/Service1Soap", NULL, NULL},
{"ns1", "configprop.cxf.spinfosec.com", NULL, NULL},
{"ns3", "configprop.cxf.spinfosec.com/Service1Soap12", NULL, NULL},
{NULL, NULL, NULL, NULL}
并且在soapService1SoapService.cpp文件中做如下修改:
//static const struct Namespace namespaces[] =
//{
// {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL},
// {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://schemas.xmlsoap.org/soap/encoding/", NULL},
// {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
// {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
// {"ns2", "configprop.cxf.spinfosec.com/Service1Soap", NULL, NULL},
// {"ns1", "configprop.cxf.spinfosec.com", NULL, NULL},
// {"ns3", "configprop.cxf.spinfosec.com/Service1Soap12", NULL, NULL},
// {NULL, NULL, NULL, NULL}
//};
//this->namespaces = namespaces;
错误已经修改完成。