c# 调用银海医保接口

xuhhff 2011-08-12 12:34:49
接口说明
属性 值
App ID
Type Library ID
Program ID yinhai.xjcj.interface
COM ClassName COClass_n_yh_interface
COM ClassID
Interface Type Dual Interface
Interface Name In_yh_interface
Interface ID

引用了动态库yh_interface.dll后,直接声明类,调用函数
初始化函数返回1,成功
CoClass_n_yh_interfaceClass yh_qyb = new CoClass_n_yh_interfaceClass();
this.yh_qyb.yh_interface_init(ref this.iReturn, ref this.sErr); --retun 1 成功
this.yh_qyb.yh_interface_call(sJybh... --return -1 失败

错误提示 “不是通过代理接口调用的” 不是直接调用的么,据说dll是pb写的?


...全文
2242 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
慕容晓 2012-11-26
  • 打赏
  • 举报
回复
我也遇到此问题了,请详细说下是怎么解决的?问题出在哪儿了?
auturh 2012-11-07
  • 打赏
  • 举报
回复
为啥一执行初始化方法,整个程序就崩溃了,直接退出了,不抱任何错误。。
dongzhong2005 2012-05-10
  • 打赏
  • 举报
回复
这个问题我已经解决了,其实很简单的,就是在同一个类的实例下调用初始化函数,成功继续调用业务函数就可以了。
dongzhong2005 2012-03-17
  • 打赏
  • 举报
回复
我也有同样的问题,初始化成功,但调用业务交易函数出现内存为只读的错误。
qldsrx 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xuhhff 的回复:]
哪位老兄帮忙看下,这vb代码转C#应该怎么写的?分不够可以加啊
[/Quote]
先把VB代码编译后,将exe或dll文件通过reflector反编译,选择C#代码方式查看,就获得你想要的C#代码了。
sdl2005lyx 2011-08-16
  • 打赏
  • 举报
回复
楼主,这几句vb的代码“翻译”成C#代码,这个你会不?不会的话,看看MSDN上面的例子多语言是怎么对应的。。。
xuhhff 2011-08-15
  • 打赏
  • 举报
回复
sdl2002lyx vb.net我试了也是可以用 为什么c#引用就是不行呢?
--------------------------------------------------------
yinhaiobject = CreateObject("yinhai.xjcj.interface")

MsgBox("1")
'检查连接是否建立
If yinhaiobject Is Nothing Then MsgBox("对象为空!")
Dim Appcode As Long
Dim Appmsg As String
yinhaiobject.yh_interface_init(Appcode, Appmsg)
xuhhff 2011-08-12
  • 打赏
  • 举报
回复
谢谢关注 这是参数说明 但调用函数的时候 参数全是object
// yh_interface_call
// 原型定义:
//yh_interface_call(
//string astr_jybh,
//string astr_jysr_xml,
//ref string astr_jylsh,
//ref string astr_jyyzm,
//ref string astr_jysc_xml,
//ref long aint_appcode,
//ref string astr_appmsg)
//参数名称 参数含义 参数类型 参数类别 参数说明
//astr_jybh 交易编号 String 入口参数 具体的交易代码见〖交易列表〗
//astr_jysr_xml 交易输入 String 入口参数 xml方式,组织方式见业务说明,字符串最大长度65534字符
//astr_jylsh 交易流水号 String 出口参数 唯一标识一次交易,VARCHAR(20)
//astr_jyyzm 交易验证码 String 出口参数 处理类交易返回,确认交易时传入 VARCHAR(15)
//astr_jysc_xml 交易输出 String 出口参数 xml方式,组织方式见业务说明
//aint_appcode 交易标志 long 出口参数 小于0均为失败。此值数据类型是整数,范围为_2147483648 to +2147483647
//astr_appmsg 交易信息 String 出口参数 错误信息描述。aint_appcode小于0时存放错误描述,其他aint_appcode不用关心该参数内容。
// 函数说明:
//交易主函数,完成所有医疗业务的实际处理。
//由于交易调用远程方法,并且可能存在用户交互界面,因此建议所有交易不要纳入HIS系统事务管理。
//在交易接口函数定义中,传递的参数都是字符串。
//但是在交易详细说明中,数据类型都是逻辑类型,常用类型有三种:string,number,datetime,下面的表格描述了交易接口进行类型转换的限制和说明。
//数据类型 空字符串 格式不合法 其它说明
//string 视同空串 无 无特别说明标注的长度为最大长度
//number 视同0 返回错误 无特别说明标注的长度为最大长度__小数尾数同__
//datetime 视同空值 返回错误 足19位长,格式如下:
//YYYY_MM_DD hh24:mm:ss
//date 视同空值 返回错误 足19位长,格式如下:
//YYYY_MM_DD
//astr_jykz_xml、astr_jysr_xml、astr_jysc_xml参数均按照交易详细说明里xml参数组合,顺序无关。



sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
COM组件在net的使用跟C#写的一般动态库没有任何区别,
“this.yh_qyb.yh_interface_call(sJybh... --return -1 失败”

你需要仔细看看这个COM组件的使用说明,很可能使用的参数有问题,导致得不到正确结果。。。
sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
楼主言重了,开个玩笑,能帮你解决问题,我也有成就感!

我的邮箱:sdl2002lyx@163.com
xuhhff 2011-08-12
  • 打赏
  • 举报
回复
我的意思是,这个pb做的com组件,c#直接添加引用有没有问题,如果有问题,怎么初始化函数能返回成功,而调用业务交易函数就报错,调用释放资源函数也没错
garfieldzf 2011-08-12
  • 打赏
  • 举报
回复
API没有说明吗?
阿建像熊猫 2011-08-12
  • 打赏
  • 举报
回复
你想干什么呀?
xuhhff 2011-08-12
  • 打赏
  • 举报
回复
分数不是问题啊,我是不知道我剩多少分怕发不了问题,分不够给钱也行。c#不是翻译出来的,就是直接引用dll,然后类实例化就直接调用它函数了,调用初始化返回1成功,调用其它方法则返回错误:不是通过代理接口调用的
sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
你把你的C#“翻译”代码贴出来,我帮你看看,
唉,你这个问题,消耗脑力,有消耗体力,40分啊,呵呵。。。
xuhhff 2011-08-12
  • 打赏
  • 举报
回复
sdl2005lyx兄,vb我刚贴的代码就是没问题的,问题是用c#怎么写
Dim yinhaiobject As Object '定义存放引用对象的变量。
Set yinhaiobject = CreateObject("yinhai.xjcj.interface")
yinhaiobject.yh_interface_init Appcode, Appmsg
-----------------------------------------------------------------
关于参数,原型定义是这样的:
//yh_interface_call(
//string astr_jybh,
//string astr_jysr_xml,
//ref string astr_jylsh,
//ref string astr_jyyzm,
//ref string astr_jysc_xml,
//ref long aint_appcode,
//ref string astr_appmsg)
但是我引用了他的dll,里边只有前面两个是string,后面都是object的,需要做什么转换么?如果我按原型定义传入string或long等,明显连编译都过不去
cjh200102 2011-08-12
  • 打赏
  • 举报
回复
一般都提供吧
sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
开发的东西,本质都是相通的,千万不要拘泥哪种语言,切忌!
sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
你先运行它的示例,如果是成功的,说明COM组件是没问题的,你把示例代码“翻译”成C#代码;
如果不成功,你就找第三方人员。
sdl2005lyx 2011-08-12
  • 打赏
  • 举报
回复
楼主,公司上班期间QQ通道封闭,抱歉,给你也没用!你之际用CSDN发短信也可以。

另外,发现你有个认识错误,“说明里边有vb pb等调用示例 问题是没有.net的”,只要有示例就足够了,不过它是什么语言的,你没发现MSDN上面的例子,都有好几种语言对应的吗?你完全可以模仿示例,“翻译”成C#语言即可,如果这个你不会,看看MSDN上的例子,我相信你很快就会上手!
加载更多回复(5)

111,091

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧