Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402519
  • 博文数量: 152
  • 博客积分: 1885
  • 博客等级: 上尉
  • 技术积分: 1306
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-13 16:51
文章分类

全部博文(152)

文章存档

2013年(1)

2012年(17)

2011年(19)

2010年(109)

2009年(6)

我的朋友

分类: 数据库开发技术

2010-02-22 11:26:30

有这样的函数可以测试: getDiseaseCatalog('3418210001') 
***************程序代码***************
ncmsservicehttpport  lproxy_obj
lproxy_obj  =  Create ncmsservicehttpport
lproxy_obj.getDiseaseCatalog('3418210001')
***************报错*******************
Application terminated.
Error:Bad runtime function reference at line 3 in clicked event of objedt cb_1 of w_test.
请问这是什么问题啊?急。。。。。。。。。。。。。。。。。。。

就这么点信息,不好判断。

ncmsservicehttpport  lproxy_obj
SoapConnection conn
conn = create SoapConnection
Conn.CreateInstance(proxy_obj,    "ncmsservicehttpport")
lproxy_obj.getDiseaseCatalog('3418210001')
记得把pbd或者pbx倒进去。通常在你pb的share下

我导入了,上面的这个例子也测试成功了,但是我调用另外一个 web services  写法和这个一样,运行时就报未知错误,很郁闷

先说说什么PB版本。

我导进去了,上面这个例子也可以返回值了,但是我调用另外一个web services ,写法相同,调用时就会提示未知错误,不知道是什么原因

pb105

不同URL的相同SERVICE?
Conn.CreateInstance(proxy_obj,    "ncmsservicehttpport",'ENDPOINT')
'ENDPOINT'的地方要写新的URL

10.5你可以试一下USE .NET ENGINE和不用,当然,要导入不同的PBX或PBD

那个都改了 新的SERVICE和url 而且 Conn.CreateInstance 返回值也是对的,就是后面调用的时候报错
Error: Unknown error,problem with SoaClient

使用 USE .NET ENGINE 要导入那个PBX或PBD?我现在引用的是 pbsoapclient105.pbd

目前如果勾选了USE .NET ENGINE
会提示 The .NET frameword SDK is not installed

先装.NET frameword SDK ,
pbwsclient105.pbd

帮忙顶一下

问我把,我与你做的是同一家的农合接口, 我已经搞定了

你好像在 调用 函数前少了 lsc_conn.createInstance(lproxy_obj,str_proxy_name,wsdl) 这个吧 ,他们的技术我是领教了 , 你等着慢慢测试吧

下面是我调用他们的下载疾病目录  过程

int mess
mess = messagebox('提示','确定要重新下载数据吗?',question!,yesno!,2)
if mess = 2 then  return
st_waiting.visible = true

//////////////////////////
//pb 调用 Web service 步骤

// 第一步  创建对象 , 连接 Web service

long ll_ret , ll_row
string str_proxy_name = 'qqncmsservicehttpport'
string err

soapconnection lsc_conn
qqncmsservicehttpport  lproxy_obj

try
lsc_conn = create soapconnection
catch (RUNtimeerror e11)
err = '创建soapconnection 出现错误,错误消息是: ' + e11.getMessage()
messagebox('',err)
st_waiting.visible = false
return
end try

try
lsc_conn.SetOptions("SoapLog=~"soaplog.txt~"")
catch (RUNtimeerror e12)
err = 'soapconnection 调用函数SetOptions 出现错误,错误消息是: ' + e12.getMessage()
st_waiting.visible = false
messagebox('',err)
return
end try
 
try 
ll_ret = lsc_conn.createInstance(lproxy_obj,str_proxy_name,wsdl)
catch (RUNtimeerror e13)
err = 'soapconnection 创建实例(函数createInstance)失败,错误消息是: ' + e13.getMessage()
messagebox('',err)
st_waiting.visible = false
return
end try
if ll_ret <> 0 then
err =  '创建实例失败,请检查代理对象是否正确,错误代码'
messagebox('',err)
st_waiting.visible = false
return
end if

//第二步  调用 Ws的方法 , 因为方法不一样,所有函数参数也不一样

string  WebService_Return_Values
try
WebService_Return_Values  =  lproxy_obj.getDiseaseCatalog (gs_hospitalcode )
catch (SoapException e14)
messagebox('调用方法','调用web service 失败:' + e14.getMessage())
st_waiting.visible = false
    return
catch (PBXRuntimeError e15)
messagebox('调用方法','调用 函数出现 运行错误 错误!')
st_waiting.visible = false
return
catch (RUNtimeerror e16)
messagebox('调用方法','调用 函数出现  不可知  错误!')
st_waiting.visible = false
return
end try

//longlong  aa
//aa = len(WebService_Return_Values)
//messagebox('',string(aa))
//messagebox('',mid(WebService_Return_Values , 6000 , 10000))
 
// 第三步  判断 调用方法是否 返回了正确的值  (错误的结果)

//messagebox('',WebService_Return_Values )
string re
re = f_nh_get_true_or_false(WebService_Return_Values)
if re <> '' then    // 表示返回了错误的结果, 并显示错误提示!
messagebox('',re )
st_waiting.visible = false
return
end if

// 第四部  把返回的值 通过 PBDOM , 转化成 XML 文件

PBDOM_BUILDER pbdom_bldr
PBDOM_Document pbdom_doc
PBDOM_Object pbdom_obj_array[]
PBDOM_Element pbdom_elem

Try

pbdom_bldr = Create PBDOM_Builder
pbdom_doc = pbdom_bldr.BuildFromString (WebService_Return_Values)
pbdom_doc.SaveDocument ("pbdom_doc_disease.xml")
Destroy pbdom_bldr

CATCH (PBDOM_Exception except)
MessageBox ("Exception Occurred", '创建PBDOM_Builder失败:' + except.Text)
st_waiting.visible = false
return
END TRY

// 第五部 把xml转化成 需要的 数据, 如,可以导入数据窗口。

//long ll_retrieve
//
//dw_2.reset()
//ll_row = dw_2.ImportFile(XML!,"pbdom_doc_disease.xml")
//if ll_retrieve < 0 then
// messagebox('',string(ll_retrieve))
//end if

destroy lsc_conn

dw_2.ImportFile(XML!,"pbdom_doc_disease.xml")

if dw_2.update() = 1 then
commit;
    messagebox('','下载成功!')
dw_4.retrieve()
else
rollback;
messagebox('','下载失败!')
end if

我现在是用了pbsoapclient115.pbd 程序可以通过了,但是编译好的程序后运行在本机上运行正确,但是到其他的机器上就会提示错误,我估计是少了某个动态库或者少安装了什么,我想问一下pb 的 c/s程序在调用web service 后客户端都需要安装什么程序和动态库?

阅读(6860) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-19 23:22:49

WebService_Return_Values = lproxy_obj.getDiseaseCatalog (gs_hospitalcode ) 这个函数的返回值是string类型的吗,如果是,这个string应该是xml转换的吧?能不能把这个函数的内容贴出来看看?谢谢!