1,Serializer->StartEnvelope("SOAP", "http://schemas.xmlsoap.org/soap/envelope/", "");
2Serializer->SoapAttribute("xsi", "", "http://www.w3.org/2001/XMLSchema-instance", "xmlns");
3,Serializer->SoapAttribute("xsd", "", "http://www.w3.org/2001/XMLSchema", "xmlns");
第1行的名字空间为什么一定是"SOAP"呢?第二个参数编码样式为什么URI就是那个呢?填"NONE"或"STANDARD"不行吗?
第2、3行的SoapAttribute是设置Envelope的属性的,可是属性名为什么是"xsi"、"xsd"呢,这两个属性是什么含义呢?Envelope共有哪些属性呢?第三个参数属性值为什么就是这两个URI呢?第四个参数名字空间的前缀为什么就是"xmlns"呢?4,Serializer->StartBody(L"NONE");
5,Serializer->StartElement(_wsMethodName.c_str(), _wsNameSapce.c_str(), "NONE", "");
6,Serializer->StartElement(L"strName", "", "NONE", "");
7,Serializer->SoapAttribute("xsi:type", "", "xsd:string", "");
8,Serializer->WriteString(strName.c_str());
第5、6行的参数为什么要那样写,是不是和"Connector->Property["EndPointURL"] = _wsURL.c_str();"和"Connector->Property["SoapAction"] = (_wsNameSapce + _wsMethodName).c_str();"有关呢?也就是所连接的WEB服务器已经它提供的服务和函数有关?
第7行,SoapAttribute为什么要给Element加这样的属性?这整个这几行代码要执行的动作,我一点都看不懂!
请大家帮忙分析下,有经验的前辈们指点!多谢!

解决方案 »

  1.   

    路过,多找找
    既然你已经写了"分析soap的这几行代码",为什么不去找找soap到底有什么规定呢?
      

  2.   

    第1行的名字空间为什么一定是"SOAP"呢?soap是一个协议,就像TCP/IP一样的协议,有协议就有标准,有标准你就应该遵循一定的套路。
    第2、3行的SoapAttribute是设置Envelope的属性的,可是属性名为什么是"xsi"、"xsd"呢,这两个属性是什么含义呢?
    就像你使用windows api一样,为什么你使用deletefile就是删除文件的api呢?这些属性已经定义好了,你使用就可以了。查msdn看各个属性的含义。其它的问题请后面的兄弟回答,谢谢!
      

  3.   

    问题提得太多了,不知道从何解释起。建议先去理解SOAP消息规范,回头再来理解这些调用语句