aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 9227|回复: 3

web.soapclient 调用失败

[复制链接]

1

主题

8

回帖

59

积分

一级会员

积分
59
发表于 2018-9-7 16:47:35 | 显示全部楼层 |阅读模式
//测试代码如下
import web.soapClient;;
        io.open();
        var soap=web.soapClient("http://www.kdclilab.com:8093/IHospitalInterface/BasicHttpBinding");
        var transArray,err=soap.ILoadLIMSSampleInfosGetResult("2018-07-10", "2018-09-25", "J19149", "123456", "J19149");
        io.print( string.join( transArray,'\r\n' ) )
        execute("pause")

170

主题

2169

回帖

1万

积分

管理员

积分
13161
发表于 2018-9-8 00:46:32 | 显示全部楼层

首先,你这个服务端根本就没有“ILoadLIMSSampleInfosGetResult”这个函数。
有个“LoadLIMSSampleInfosGetResult”他的返回值也不是一个数组,所以也不可能会用到string.join。
如果你都不知道要调用的函数名是什么,也不知道他有些功能是干什么的,那就比较奇怪了。

WebService过于复杂,在C#之外就更没什么人愿意用了,现在基本已经被更简洁的REST取代。
web.soapClient 的实现也比较简单,一共就没有几句代码,所以一些比较复杂的接口肯定支持不了。

所以如果遇到不支持的WebService,尽量就不要用了,改用更简单的REST接口,没有必要去自寻烦恼。
如果一定要用的话,可以在C#里先调用那个WebService写一个DLL,然后aardio可以调用C#的dll。

170

主题

2169

回帖

1万

积分

管理员

积分
13161
发表于 2018-9-8 00:48:43 | 显示全部楼层
如果不会用C#的话,也可以在aardio里直接调用C#创建Web服务。
这个是我刚加的功能,示例:
import dotNet;
import console;

var clr = dotNet.clr();
var appDomain = clr.createAppDomain();
var webService = appDomain.createWebService("http://www.kdclilab.com:8093/IHospitalInterface/BasicHttpBinding")  

var hospitalInterfaceBiz = webService.createInstance("IHospitalInterfaceBiz");
var ret = hospitalInterfaceBiz.LoadLIMSSampleInfosGetResult("2018-07-10", "2018-09-25", "J19149", "123456", "J19149");

console.dump(ret);
console.pause();


1

主题

8

回帖

59

积分

一级会员

积分
59
 楼主| 发表于 2018-9-8 15:47:43 | 显示全部楼层
非常感谢,Jacen的回复,Jacen的回答已经完全解决了我的问题.谢谢~
(我竟然把调用的方法名字也搞错了,真丢人...)
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-9-15 21:43 , Processed in 0.053244 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表