使用类似代码 CoInitialize(NULL); HRESULT hr = S_OK; int hiResult; CComBSTR username = Globle_User; CComBSTR password = Globle_Pass; CService* debug = new CService; // 代理对象 // 可以调用SetUrl动态设置Web服务地址 CString url; url = L"http://" + NetAddress + L"/service.asmx?op=login"; debug->SetUrl(url); hr = debug->login(username, password, &hiResult); //注意,返回值是以指针形式反回的 if(Failed(hr)) { } delete debug; CoUninitialize(); 方法二:直接使用soap方法访问webservice ISoapSerializerPtr Serializer; ISoapReaderPtr Reader; ISoapConnectorPtr Connector; IDataEncoderFactoryPtr encoderFc; HRESULT hr; CoInitialize(NULL); if(Failed(Connector.CreateInstance(__uuidof(HttpConnector30)))) //创建对象 { AfxMessageBox(L"soap失败"); return -1; } CString url = L"http://" + NetAddress + L"/service.asmx?wsdl"; Connector->Property["EndPointURL"] = (LPCTSTR)url; Connector->Connect(); // Begin the message. //消息体 Connector->Property["SoapAction"] = "http://tempuri.org/login"; //函数体参数 Connector->BeginMessage(); Serializer.CreateInstance(__uuidof(SoapSerializer30)); Serializer->Init(_variant_t((IUnkNown*)Connector->InputStream)); // Build the SOAP Message. try{ Serializer->StartEnvelope("","",""); Serializer->StartBody(""); Serializer->StartElement("login","http://tempuri.org/",""); Serializer->StartElement("ID","NONE",""); Serializer->WriteString((LPCTSTR)Globle_User); Serializer->EndElement(); Serializer->StartElement("pass",""); Serializer->WriteString((LPCTSTR)Globle_Pass); Serializer->EndElement(); Serializer->EndElement(); Serializer->EndBody(); hr = Serializer->EndEnvelope(); Connector->EndMessage(); Reader.CreateInstance(__uuidof(SoapReader30)); Reader->Load(_variant_t((IUnkNown*)Connector->OutputStream),""); //加载返回数据
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。