1

我开始学习如何使用tclws api 通过 TCL 客户端调用 JAX-WS webservice。我在 glassfish 服务器上部署了一个简单的计算 web 服务(使用 java/jaxws/netbeans 编写),它被我的 tcl webservice 客户端成功调用。肥皂消息交换看起来很好。但是,在调用 glassfish webservice 后的客户端,我收到了额外的标头,我不确定它是如何返回的,如何处理它以及为什么它显示在我的屏幕上

设置 xns [dict get [::WS::Utils::GetServiceTypeDef 客户端计算器WS tns1:add] xns] 定义 {param1 {type xs:int comment {}} param2 {type xs:int comment {}}} xns tns1
结果是:7

这是我的示例 tcl ws 客户端代码:

package require WS::Client
::WS::Client::GetAndParseWsdl http://xxxx.xx.xx.com:8099/CalculatorWS/CalculatorWS?wsdl
set param1 5
set param2 2
set inputs [list param1 $param1 param2 $param2]
set result [ ::WS::Client::DoCall CalculatorWS add $inputs]
set res [dict get $result return]
puts "result is :$res"

谁能帮助我如何防止打印/显示此标题?我错过了什么吗?

4

1 回答 1

2

Johannes13 在评论中说了什么。

这不会发生在我的旧版本的 tclws 上,但是下载最新的,那里只剩下一堆 puts 语句用于调试。这很奇怪,因为 tclws 使用 log 包并且在代码中还有大量 ::log::log 调试语句,这将使打开/关闭变得更容易。

要解决您的问题,您只需 grep tclws 包并删除这些行,或者将这些 puts 语句替换为 ::log::log 调试。这不是简单的搜索和替换,因为 tclws 确实使用 puts 来写入服务器代码中的套接字。但是,如果您只使用客户端,则 ClientSide.tcl 和 Utilities.tcl 文件中的实例很少需要手动处理。

于 2013-02-02T16:54:06.213 回答