• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请大虾帮忙!VC使用soap,调用Invoke出错,请看代码

请大虾帮忙!VC使用soap,调用Invoke出错,请看代码

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 请大虾帮忙!VC使用soap,调用Invoke出错,请看代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请大虾帮忙! VC使用soap, 调用Invoke出错, 请看代码
描述:

CComPtr<ISoapClient> spSOAPClient;
HRESULT hr = spSOAPClient.CoCreateInstance(MSSOAPLib30::CLSID_SoapClient30);
CHECK_HR(hr);
hr = spSOAPClient->MSSoapInit(
_bstr_t("http://localhost/MyWebService/MyWebService.wsdl"), 
_bstr_t("MyWebService"), 
_bstr_t("MyEEESoapPort"), 
_bstr_t("http://localhost/MyWebService/MyWebService.wsml")
);
CHECK_HR(hr);
WCHAR *pwcMethodName = L"test1";
//DISPID mydispid
DISPID dispidFn1 = 0;
hr = spSOAPClient->GetIDsOfNames(IID_NULL, &pwcMethodName, 1, 
GetUserDefaultLCID(), &dispidFn1);
CHECK_HR(hr);
DISPPARAMS params = {NULL, NULL, 0, 0};
unsigned int uArgErr = -1;
_variant_t result;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof(excepInfo));
hr = spSOAPClient->Invoke(
dispidFn1, 
IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, 
&params,
&result, 
&excepInfo,
&uArgErr);
if (FAILED(hr))
{
if(hr = DISP_E_EXCEPTION)
AfxMessageBox("ERROR");
exit(0);
return;
}
反正程序调用invoke时候就错了
描述:
ATL写了一个COM组件, 有一个test函数 ,但无参数
使用WSDLGen产生WSDL, WSML文件
请问我的程序错在哪里, 为什么执行到invoke就出错.
谢谢各位, 
up有分


解决方案1:

template <class T>
class CProxy_IHisDialEvents : public IConnectionPointImpl<T, &DIID__IHisDialEvents, CComDynamicUnkArray>
{
//Warning this class may be recreated by the wizard.
public:
HRESULT Fire_OnDialStatus()
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[1];
int nConnections = m_vec.GetSize();
OLECHAR FAR *szMember;
szMember = OLESTR("OnDialStatus");
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
DISPID dpid;
if (pDispatch != NULL)
{
pDispatch->GetIDsOfNames(IID_NULL,&szMember,1,LOCALE_USER_DEFAULT,&dpid);
VariantClear(&varResult);
//pvars[0] = lArg;
//这里产生异常?????
//我的也是这个问题
//Invoke()....
DISPPARAMS disp = { NULL, NULL, 0, 0 };
pDispatch->Invoke(dpid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;
}
};
------------------------------------------------------

解决方案2:

请教一个问题,我在和你做类似的事情,
我新创建了一个win32 application,然后在stdafx.h中加入了
#import "msxml4.dll" 
using namespace MSXML2;
#import "C:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll"             exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER",                     "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib30;
然后在test.cpp里
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
CoInitialize(NULL);
HRESULT hr;
ISOAPClient m_pSoapClient = NULL;
if (m_pSoapClient != NULL) m_pSoapClient.Release();
hr = m_pSoapClient.CreateInstance(__uuidof(SoapClient));
if(FAILED(hr))
{
MessageBox(NULL,TEXT("Cannot create SoapClient."), NULL,MB_OK);
return false;
}
try
{
m_pSoapClient->mssoapinit((LPCTSTR)TEXT("http://zym/TempConvert1/Service1.asmx?wsdl"), _T(""), _T(""), _T(""));
}
catch(_com_error err)
{
MessageBox(NULL,TEXT("Cannot initialize SoapClient."), NULL,MB_OK);
return false;
}
CoUninitialize();
return 0;
}
但我这报error C2065: 'ISOAPClient' : undeclared identifier,为什么?
我该加入些头文件?还是要copy一些文件到我应用程序目录下?!在线等待!


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请大虾帮忙!VC使用soap,调用Invoke出错,请看代码

相关文章

  • 2017-06-05 有TAPI30在VS2008如何调用?
  • 2017-06-05 在线等…………一个奇怪的问题
  • 2017-06-04 如何将一个接口存放在LIST的每一行中?
  • 2017-06-05 简单问题,高分求教?各位高手不吝赐教
  • 2017-06-04 VC&&JS问题
  • 2017-06-05 如何使用AfxEndThread结束线程??
  • 2017-06-04 智能指针只能用于COM(单机),不能用于DCOM(双机上)吗?
  • 2017-06-04 如何通过载入的ActiveX来在当前IE进程中创建一个自定义行为的“永久性”线程
  • 2017-06-04 vc60与matlab混编,基于com组件的的数据传递问题
  • 2017-06-04 给分贴,再请xmzzy进来拿分

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 病毒,木马,系统编程的高手近来看看了
    • QueryInterface如何使用?
    • 工作线程自定义的消息循环的问题?
    • 我用GetFileVersionInfo为什么检测不到smss,csrss,winlogon这三个进程的版本?我的系统是XP,谢谢!
    • 如何捕捉Stackoverflow的异常?
    • 关于创建组件对象
    • vcexcel问题
    • 一个消息问题:
    • src=abc:greengif中的abc是什么意思?命名空间?
    • 如何实时控制IE?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有