微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice 使用vs2005生成代理

 使用类似代码 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] 举报,一经查实,本站将立刻删除。

相关推荐